I’m uneasy about chaining / threading / piping operators, be it #Haskell’s $, #Wisp colon, #Clojure arrows, or my own #CommonLisp #/ operator from <https://codeberg/aartaka/lin-edi-table>.
These seem to restrict the code in what it can do. With dirty imperative or functional code, you can insert new forms literally everywhere. But with these operators you have to come up with strategies to compose things properly.
Which is not a problem with Clojure, because at least built-ins are designed with threading in mind. But it’s much harder in brown field langs like CL.
This post was brought to you by refactoring a complex seven-stage threading in Clojure.