Just one caveat to the use of core.async as a processing pipeline (as in section 6: Callbacks), make sure you're taking extra care to handle exceptions. Since the exception occurs in a separate thread, it will happen silently and will cause your pipeline to stall.<p>Some recommended reading for how to handle such a scenario:<p><a href="http://martintrojer.github.io/clojure/2014/03/09/working-with-coreasync-exceptions-in-go-blocks/" rel="nofollow">http://martintrojer.github.io/clojure/2014/03/09/working-wit...</a><p><a href="https://github.com/zachallaun/async-pipeline" rel="nofollow">https://github.com/zachallaun/async-pipeline</a><p><a href="https://github.com/ztellman/manifold" rel="nofollow">https://github.com/ztellman/manifold</a>
I absolutely love @nonrecursive's writing style. This is one of those books that are a pleasure to read and as such it's very easy to learn (and keep) the information given.<p>Once this is out in dead-tree form I will definitely get a copy or three (there are geeks around me who will enjoy it too).<p>This isn't just a very good introduction into Clojure. This is a real piece of art.
If you're trying to learn clojure, read this book. Maybe even first.<p>Agree with what others have said, Clojure for the Brave and True is a fantastic book, was excited when I got the leanpub email this morning alerting me to a new chapter.