1. 8
  1.  

  2. 1

    Interestingly enough, there was some discussion about this on the arc forum that ended with me adding it to my lisp implementation.

    a) It turns out threading works really well in a lisp with infix. For example, see how I use it in http://rosettacode.org/wiki/Rot-13#Wart.

    b) You can collapse –> and –>> into a single primitive by requiring expressions to contain say an underscore to represent where threading happens.

    (-> (sha1 in)
         (bytes->hex-string _)
         (bytes-append _ #".")
         (displayln _))
    

    Now, arguably this will break with anything but the simplest expressions. But, I contend, so will the existing approach.

    c) Since wart has first-class macros, I can provide either functions or underscore-expressions, mixing and matching as needed.

    (-> (sha1 in)
         bytes->hex-string
         (bytes-append _ #".")
         displayln)