<-- back

Emacs has built-in thread macros

Intro

Surprisingly for me I just discovered that Emacs Lisp has equivalent of Clojure’s -> and ->> macros.

And I’m not talking about dash.el. I’m talking about built-in thread-first and thread-last.

What are these

If you’re not familiar with these beautiful macros, the main goal is to pipe a value through multiple functions and return the result.

-> passes a value as first argument of next function, then takes the result and passes it as first argument to next function, etc.
->> does the same except that it passes the result as next function’s last argument

Example

Instead of having this:

(+ (- (/ (+ 5 20) 25)) 40)

we can have this:

(->
  5
  (+ 20)
  (/ 25)
  -
  (+ 40))

It’s way easier to modify and which is even more important - to read.

Emacs lisp equivalent

There is dash.el library that provides us with similar macros (and many more) but emacs has built-in thread-first and thread-last.

(thread-first
  5
  (+ 20)
  (/ 25)
  -
  (+ 40))

will work for you if you’re on Emacs 25 or newer.

I don’t write much elisp but every time I do I feel like I miss those ->/->>.

Not anymore!


Feel free to contact me for feedback or questions. Find my contacts on About page.