[PRL] [plt-internal] Video of Clojure talk
Shriram Krishnamurthi
sk at cs.brown.edu
Thu Oct 2 14:41:18 EDT 2008
>> So he has RECUR for loops. He says something that sounds
>> contradictory (65:00) about tail calls -- I don't quite get it.
>
> What I think you're referring to is him saying that this:
>
> (defn tail-loop [n]
> (if (= 0 n) "whee" (recur (- n 1))))
>
> runs in constant stack space, even though the `loop' form is not used.
No, he gets an audience question about tail calls, recognizes that
they are useful for setting up networks of calls between functions,
and then says something that I don't understand -- it sounds both like
you can do that with his constructs, AND that it will blow up out of
memory. (You don't need special constructs to achieve the latter!)
> Well, yes, but not just that. He restricts mutation to in
> transactions
Doesn't every STM have caveats about this?
> he has some additional concurrency features that are more like
> message passing.
You're referring to his asynchronous messaging? That's okay, but what
I thought was nice about it was the interaction with transactions. He
clearly has thought out how his features interact.
> Do you have some examples or something I could google? The Wikipedia
> article seems to be about HCI, and I could sort of imagine how it
> would be related, but some pointers would be useful.
I did a whole course on it last spring:
http://www.cs.brown.edu/courses/cs296-1/2008/
Specifically, look at the papers under
Operational Transformation
Commutative Datatypes
Tombstones and Undo
[there's a fair bit of overlap within and between the groups].
Shriram
More information about the PRL
mailing list