Hacker News new | past | comments | ask | show | jobs | submit login
Books that influenced Clojure (amazon.com)
48 points by mariorz on June 20, 2009 | hide | past | favorite | 16 comments



I'm shocked that Java Concurrency in Practice isn't in the list:

http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/...

I only know about that book because of Rich's mentions of it.

To be honest, I"m also a little surprised that the Pickaxe book is in the list. Not that Ruby isn't the bees knees; it just didn't strike me as being influential on Clojure.


I, too, am surprised that Java Concurrency in Practice is missing. Rich has mentioned several times. Odd.

As for the Ruby influence, Rich mentioned that he is a "language nerd" and learns all kinds of languages. Whether any one language shows up in some way in Clojure is another matter ;-) I think the Ruby influence shows up in Clojure's ease of scripting Java, cutting through the ceremony to get things done in minimal code.


I'm sure I selected it, but I didn't realize it hadn't gone into the list. Now fixed - thanks.


On #clojure, Rich once mentioned that Jim Gray's "Transaction Processing.." influenced his design of clojure's STM. IIRC, he mentioned that the MVCC aspect of the STM and the commute operation were some of the ideas that he took from the book.

Another paper that gets repeatedly mentioned as being influential in Clojure's design is http://web.mac.com/ben_moseley/frp/paper-v1_01.pdf

Once you finish the above paper, you should also look at http://code.google.com/p/clojure-contrib/wiki/DatalogOvervie... for seeing one way of doing FRP in clojure.


Another paper that gets repeatedly mentioned as being influential in Clojure's design is ["Out of the Tar Pit" by Moseley and Marks]

Repeatedly mentioned by whom? I've looked at these guys' stuff a few times. While the idea of functional-relational programming is appealing, it is also obvious, and as far as I can tell they're not providing much more than fluff.


Repeatedly mentioned by whom?

Rich Hickey.


That's interesting. I guess I'm missing the value there. I'd give it another look, except I just did.


He seems to use it to deflect the TDD crowd. Personally, I found it boring.


There are some interesting quotes there, but many of the intermediate conclusions are not well supported.


anything that deflects the TDD crowd is very useful! (and so not boring!)


Since Clojure lacks tail-call optimization, I'm not sure how the book "Programming Clojure" influenced it...


Funny. :)

But really, the book betas were released months before Clojure 1.0, so it's likely Rich saw issues/confusion and adapted the language as necessary.


His list has a head call. -m


You can read the thesis that later became "Purely Functional Data Structures" for free online: http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

It's a great read even for those who don't yet have experience with functional programming.


Can you explain to me what the distinction between persistant and ephemeral data structures are (as mentioned in the thesis)? From a brief reading, my understanding is that persistance implies a record of all changes to a data structure are kept somewhere, but that this is only really useful for multithreaded programs. Is that correct?


in a persistent data structure, you don't actively remove, delete, or change anything. rather each time you make a 'change', you create a new structure which points to, and reuses as much of the old one as possible. then the garbage collector removes the unused bits, if any.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: