[PRL] [plt-internal] Video of Clojure talk
Sam TH
samth at ccs.neu.edu
Thu Oct 2 15:05:37 EDT 2008
On Thu, Oct 2, 2008 at 2:41 PM, Shriram Krishnamurthi <sk at cs.brown.edu> wrote:
>>> 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!)
Dave's assessment is correct about this.
>> Well, yes, but not just that. He restricts mutation to in
>> transactions
>
> Doesn't every STM have caveats about this?
Caveats, yes. But not all of them have such a strong restriction.
>> 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.
Right. That was one of the most impressive things about the language.
>> 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
Cool, thanks.
--
sam th
samth at ccs.neu.edu
More information about the PRL
mailing list