[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