
Books that influenced Clojure - mariorz
http://www.amazon.com/Clojure-Bookshelf/lm/R3LG3ZBZS4GCTH/ref=cm_lm_byauthor_title_full
======
icey
I'm shocked that Java Concurrency in Practice isn't in the list:

[http://www.amazon.com/Java-Concurrency-Practice-Brian-
Goetz/...](http://www.amazon.com/Java-Concurrency-Practice-Brian-
Goetz/dp/0321349601/)

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.

~~~
charrington
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.

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

------
crc
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...](http://code.google.com/p/clojure-
contrib/wiki/DatalogOverview) for seeing one way of doing FRP in clojure.

~~~
gruseom
_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.

~~~
menloparkbum
_Repeatedly mentioned by whom?_

Rich Hickey.

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

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

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

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

~~~
bretthoerner
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.

------
iman
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.

~~~
anonymousDan
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?

~~~
sigstoat
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.

