• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Junilu Lacar
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Knute Snortum
  • Tim Cooke
  • Devaka Cooray
Saloon Keepers:
  • Ron McLeod
  • Stephan van Hulst
  • Tim Moores
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • Frits Walraven
  • Ganesh Patekar

Clojure in Action and Clojure versions

 
Rancher
Posts: 352
21
Mac OS X Monad Clojure Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
When the 1st Edition of Clojure in Action came out, it targeted Clojure 1.2. Clojure 1.3 had been released by that point and there were massive changes in the library ecosystem such that several examples in the book would not run on Clojure 1.3 (partly because the monolithic "contrib" library was only compatible with Clojure 1.2, not 1.3, in several places). Manning knew this (and I even talked to their staff at a conference about doing one more pass over Clojure in Action to bring it up to 1.3) but they decided to release the book as-is anyway.

The 2nd Edition of Clojure in Action targets Clojure 1.6 and has been released roughly coincident with the availability of Clojure 1.8. How comfortable do you feel about people being able to use the book with the current release of Clojure, and are there things from Clojure 1.7 and 1.8 that you would have liked to include in the 2nd Edition prior to it being released?
 
Author
Posts: 4
5
IntelliJ IDE Clojure
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
When I started work on the second edition Clojure 1.7 was still beta (not yet even release-candidate); Clojure 1.8 was released less than a month after the book went to print.

The first Clojure version I knew was 1.4 or 1.5, so I have no first-hand experience of the tooling and library upheavals in 1.3. From what I hear, lot less has changed between Clojure 1.6 and 1.8 than between 1.2 and 1.3. I myself still actively develop on projects that use Clojure 1.6, although they will probably be upgraded soon since the upgrade is relatively painless.

The fundamentals of Clojure and Clojure's FP style is unchanged between 1.6 and 1.8, so I still think this book is a solid introduction to Clojure for someone who has no Clojure or FP experience. It's not a great book for someone who has some Clojure experience and is looking for more. For that I recommend The Joy of Clojure, now in a second edition, but alas also updated for Clojure 1.6, not 1.7 or 1.8.

Clojure 1.7 added transducers and reader conditionals; Clojure 1.8 added the socket server, direct linking, and some more clojure.string functions to ease interop. Of these, the only feature I sincerely regret not being able to devote a chapter to is transducers (and reducers, a closely-related 1.6 feature I also don't talk about but which I would have liked to). Transducers add a new 1-arity to most of the core sequence-processing functions which I'm sure a beginner will accidentally stumble into and be very puzzled by. Also, transducers+reducers (and the IReduce protocol) are part of what makes Clojure special. I'm also not sure if there is a Clojure intro book currently in print which talks about transducers, so it also would have been nice to be first-to-print with that.
 
Sean Corfield
Rancher
Posts: 352
21
Mac OS X Monad Clojure Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Francis Avila wrote:
Of these, the only feature I sincerely regret not being able to devote a chapter to is transducers (and reducers, a closely-related 1.6 feature I also don't talk about but which I would have liked to). Transducers add a new 1-arity to most of the core sequence-processing functions which I'm sure a beginner will accidentally stumble into and be very puzzled by. Also, transducers+reducers (and the IReduce protocol) are part of what makes Clojure special.


Excellent answer -- thank you Francis!
 
This is my favorite tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!