Articles on Clojure
Last updated: 2021/11/30
Top deep-dives on Clojure
I did some dabbling in Clojure in the past, and found it to be an extremely powerful, albeit initially not a very intuitive language. One of its controversial characteristics is that the type of function parameters and return values isn't enforced. In this in-depth article, Stathis Sideris presents the response to this criticism, which is done in the form of specs. Stathis focuses on two major topics; what is a spec and how can you use it?
Yesterday, concepts like laziness seemed so far away, but now it looks as though they're here to stay, oh, I believe in laziness; which is generally defined in programming as loading or computing resources only at the time when they are needed. Gary Verhaegen's article focuses on how laziness in Clojure can handle side effects (whereas Haskell requires purity), with examples of Clojure programs being reimplemented in Haskell.
Some say premature optimization is the root of all evil, but that quote is often times taken out of context, because it's actually followed by "Yet we should not pass up our opportunities in that critical 3%". Ben Sless' article was inspired by another post claiming the speed superiority of Common Lisp over Clojure, and in it Ben presents a number of techniques for optimization in Clojure that make the example code run faster than the Common Lisp version.
In programming, a zipper is "a wrapper that offers a variety of data manipulations". But zippers are an abstraction and come with their own complexity. Ivan Grishaev's eight part article traverses the basics of navigation, automatic navigation, XML zippers, XML search, editing, virtual trees, breadth-first traversal, and concludes with a summary.
A lot of the decisions you make in programming can be broken down into is the abstraction easier to maintain than reality? Depending on what your answer is, that's the option you should go with. Alex King's article demonstrates how your code can become more modular through abstractions, implemented in Clojure.
Although the introduction of the async library has made promises somewhat obsolete, they still might have some niche use cases in Clojure. Gary Verhaegen has written an article that breaks down what a promise is, explores its relation to other languages and other Clojure constructs, and a couple of its uses.