anchor.diff:        `(as-> ,value ,sigil ,@(mapcar #'prepare forms)))))
   
   (defmacro ->> (value &body forms)
  +  "Thread the given value through the provided forms.
  +
  +This is very similar to Clojure's macro with the same name.
  +
  +See `->'.  Unlike `->', this threads the value through as the last
  +argument to the function rather than the first argument."
     (let ((sigil (gensym "SIGIL")))
       (labels
           ((prepare (form)
  
positive.code:     (get-output-stream-string stream)))
  
  (defun symbol-nconc-gensym (first-bit &rest other-bits)
    (gensym (apply '%symbol-nconc first-bit other-bits)))
  
  (defun symbol-nconc-intern (package first-bit &rest other-bits)
    (if package
        (intern (apply '%symbol-nconc first-bit other-bits) package)
        (intern (apply '%symbol-nconc first-bit other-bits))))
  
  (defun progn-concatenate (&rest forms)
    (let ((result (list 'progn)))
      (dolist (form forms)
        (cond
  
negative.code:        (car result)))))
  
  (defun bodyify (form)
    "Turn a single form into a list of forms appropriate for splicing
  with ,@ in a macro.
  
  If `form' is a `progn' form, then this simply returns the cdr of
  `form'.  Otherwise, this returns a list containing `form'.  This is
  useful if you want to unroll `progn' forms in your macros."
    (if (and (consp form)
             (eq 'progn (car form)))
        (cdr form)
  