For example, what is this

( -> 2 ( expt 0.2 ) ( * 2017 ) sin ) ; ⇒ -1.0

The Clojure language has some neat macros (such as -> and ->> ) which are called threading macros (nothing to do with these threads) which let you unwrap some types of deeply nested forms. The dash library for Emacs Lisp implements some of those threading macros. While I do not use threading macros in my elisp code, I know that elisp beginners would love using these macros, so I wrote this article.

Prerequisites: Readers are not required to be familiar with Clojure or dash, but you are assumed to be able to install the dash library. Unwillingness to check the length of the word humuhumunukunukuapuaa by hand is required.

Common Lisp Note: These threading macros can be defined in Common Lisp too. When you define them, don’t forget that threading macros are more than just function call chaining. What I mean by that? I’ll get to that soon.