[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