There are a few books about Clojure in the works now. But despite the variety in authorship and publisher, they all seem to be primarily in the vein of a language tutorial, starting from a basis of "common knowledge" among most programmers and taking the reader to a level of basic familiarity with Clojure.
Michael Fogus and I think there is more to Clojure that has yet to be addressed by any of the books currently being written. So we've started writing "The Joy of Clojure". Our vision for this book is to impart not just what Clojure is, but why it's the way it is; not just how to use it, but how to choose well from among the wide variety of options Clojure provides. And along the way we hope you'll experience the wonder, amazement, and, yes joy that Clojure can bring to programming tasks that often feel like nothing more than chores in other environments.
I also wanted to take this opportunity to brag a little on Fogus. He's been a fantastic partner throughout this process -- I wouldn't even be involved if it weren't for him. He has put into our book many references to papers and books that I've never heard of, but that illuminate much of Clojure's design -- clearly he has read a good deal more than I have. Once we're done writing, I intend to use the Bibliography as a reading list -- I'm sure it will be enlightening. He is dedicated to producing the best book we can, and he's the only reason we're meeting any of our deadlines. I'm looking forward to the next few months as we finish this book together.
- The Joy of Clojure
- Thinking the Clojure Way
by Michael Fogus and Chris Houser
I think, that the chapter about Macros could be extended with examples of architecting/building of DSLs – this is important topic, that partially belonging to Large-Scale Design. May be you could take some ideas from On Lisp, that has good examples of this?
Suggestion, show how you could do some real practical things with clojure, like Perl-style datamunging and practical tasks using the Java library, or build a practical website like the book “railspace” does, and throw in some Essentials of Programming Style (EOPL) -like DSLs, and scheme like magic like streams and other functional constructs, it would be really nice if you could show how you could do practical things with a lispy functional language.
agreed on jonfernquest’s idea. Without traditional objects/classes in clojure, how to manage or design a software instead of just hacking?
I love clojure’s simplicity and power, hope you guys can show how to build a practical web app or desktop app.
We will definitely have some DSL examples, though the difference between a good API and a good DSL is sometimes more of a smooth gradation and doesn’t always require macros (see clojure.contrib.zip-filter)
As for how to design software, the whole point of the large-scale design part is to demonstrate how to take advantage of Clojure’s features and not fall back onto stilted attempts to mimic what you would do in object oriented features. I think we want to mostly avoid getting bogged down too much in specific APIs for various libs or frameworks, but we’ll be sure to have plenty of examples.
Thanks for the comments! I hope you all enjoy the book.
I think you hit the spot there. Please, no more tutorials. Depth would be so refreshing. I suspect people will often struggle to find the idiomatic clojure solution to common problems. Investigating many alternative implementations of a solution is imho one of the best ways to learn a language in depth. I think there is also a need to have a better overview of what the clojure standard library offers.
Hi, I’ve bought the book last week, just read the first chapter and like it so far. I’ve tried to post my comments/corrections on the Manning forum but for whatever reason it was lost and I didn’t kept a copy of it, so I’ll skip this one. Anyway the most important point was related to this post in that the I’ve suggested to talk about Rich previous project (something about CL running on top of the JVM/CLR) somewhere at the beginning of section 1.2 or even a new section to elaborate on Clojure’s history a little bit. That may answers some questions surrounding Clojure design, even though that may be more interesting to Lispers than other type of reader. I really like to learn about history.
Thanks for writing this book!
I’m reading through the MEAP and am look forward to the book’s development and completion. F# got an excellent book last year with Real World… and this book seems set to provide good insight into the concepts of Clojure.
I totally agree that there is a need to move away from simple technical tutorials, but please don’t neglect idioms! Idiomatic ways of coding in Clojure is something I still struggle to figure out.
[...] The Joy of Clojure, my perspective. [...]