Arc Forumnew | comments | leaders | submitlogin
Generalizing expressions as dataflow (rocketnia.wordpress.com)
4 points by akkartik 1982 days ago | 6 comments


2 points by akkartik 1982 days ago | link

rocketnia, you should really submit your posts here. Don't be shy, it's not like we have a lot to see here. And I find I check Arc Forum a lot more often than Google Reader ^_^

---

It's actually kinda interesting to explore why this is. I have a site as well, but most people don't come there. I need to go where the audience lives: facebook, twitter, G+, arc forum. The readers throng where everybody else is, and where useability is great. RSS promised a collectively-owned common area, but its useability was inadequate. Facebook and G+ have great useability, but it's concerning to give a single entity so much power over our conversations. Is there a way to incent people to build a great experience without owning the venue of conversation?

And why do I not go to Google Reader as much? In the beginning it was because I subscribed to too much stuff[1]. http://readwarp.com has solved that problem for me. Now I only subscribe to low-volume feeds on Google reader; the rest goes into Readwarp so I can sip from it at random. But there's a new problem I'm just starting to grow aware of: even if I have only 10 posts a day on google reader they're all over the map, and the brain sometimes shrinks from the prospect. To go to Google Reader I need to be in an open enough mood. Whereas when I come here (or even when I go to HN) I have a better sense of what to expect.

[1] It seems we rediscover this problem on every new platform (RSS, twitter, facebook, ...): http://akkartik.name/blog/2009-05-19-21-30-46-soc

-----

1 point by kinleyd 1980 days ago | link

Interesting post, akkartik. I still use Google Reader and continue to enjoy it so I guess I haven't subscribed to as much as you had. I agree HN and Arc Forum give more focused subjects and primarily rely on Reader to keep up with version updates, and new blog posts by people who I follow who don't have regular new post patterns. That primarily saves me a long list of visits to different places only to discover there isn't any new.

Is readwarp.com something you set up? It looks good.

-----

1 point by akkartik 1980 days ago | link

Yeah, old-timers here know I like to talk about readwarp :) I built the website in arc. (The feed crawling pipeline is in python, primarily so I could use BeautifulSoup.)

-----

1 point by kinleyd 1980 days ago | link

Cool.

-----

1 point by akkartik 1982 days ago | link

Sequel: http://rocketnia.wordpress.com/2012/04/29/a-dataflow-syntax-.... I haven't wrapped my head around it all (are linear variables different from linear types?).

FredBrach was thinking about something similar, decoupling scope declarations from variable declarations (http://arclanguage.org/item?id=16147)

-----

2 points by rocketnia 1972 days ago | link

Whoops, I guess I didn't reply to this.

Yes, part of what FredBrach did with scopes was eerily similar to what I was thinking about at the time. ^_^ I didn't talk about it much in response, but I did consider it promising.

I was also thinking about this topic a couple of days before http://arclanguage.org/item?id=15831, where I wrote "Suppose there were a special form (varscope <var> <...body...>) which scoped (<var> <name> <val>) as a special form in the body, which both defines and assigns to a variable and returns the new value. One can say (var foo foo) to define a variable without modifying it."

I think this kind of generalized scope jives well with a linear system. Linearity is about assuming every value is produced once and consumed once by default. Everyday lambda calculus lets you introduce a variable at the acquisition site and then (nonlinearly) use it any number of times in the body. For the reverse of that, when we're dealing with values we use once but define in any number of places (e.g. for set accumulation or nondeterministic choice), maybe it can make more sense to "introduce" the variable at the usage site.

My blog post's "Aside" expressions cater to many-to-many, zero-to-many, many-to-zero, and zero-to-zero operations, where there's no obvious definition or usage site to single out for the variable introduction.

---

"I haven't wrapped my head around it all (are linear variables different from linear types?)."

Hmm, when I said "linear variable," I just meant a variable with a linear value or a linear type. This kind of variable appears in the code at exactly one definition site and one usage site, unless the code uses conditionals or something.[1]

If you're in the midst of changing your question to "are linear values different from linear types?" the answer is no, I'm talking about the same concept. :) However, it is possible to have dynamically checked linear values in an untyped language. Likewise, I bet it's even possible to have linear typing without linear values, in the sense of fostering a programming subculture which considers the types important and the values unimportant.

If you're in the midst of changing your question again, no, I'm not sure why it's called "linear." :-p But in order to rationalize the name myself, I look at the life story of a single value. For an intuitionistic value, this timeline can split apart across multiple parts of the program at once. A linear value can't typically branch, merge, begin, or end, unless it does so by transferring its content into new linear values. This makes its life story linear.

[1] Conditionals don't even exist in the expression language I described in that blog post, and I expect that'll make it less helpful as a language but easier to implement. :/ I haven't come up with a way to add conditionals yet.

-----