title: Lisp chaining functions macro
body: <p>Is there a ready made lisp macro that allows chaining (piping) of functions? I couldn't find one. I'll try to explain what I mean with this example.</p>
  
  <p>Instead of using let* with lots of unused intermediate variables like this:</p>
  
  <pre><code>(let*
    ((var1 (f1 x y))
     (var2 (f2 x var1))
     (var3 (f1 var2 z)))
   var3)
  </code></pre>
  
  <p>I would like to have it written like this:</p>
  
  <pre><code>(-&gt;
    (f1 x y)
    (f2 x _)
    (f1 _ z))
  </code></pre>
  
  <p>where, obviously <strong>_</strong> will be return value from previous expression. A plus is if would be possible to use <strong>_1</strong>, <strong>_2</strong>, ... to reference previously returned values.</p>
  
  <p>This is the idea, exact syntax is not that important.</p>
  
  <p>I know this is not that hard to write, but seems so useful that it has to be written already.</p>