store/[org.clojure/clojure "1.8.0"] clj::clojure.core/as->

Official Documentation

Add notes
Arities
==================================================
   [expr name & forms]

Docstring
==================================================
  Binds name to expr, evaluates the first form in the lexical context
  of that binding, then binds name to that result, repeating for each
  successive form, returning the result of the last form.

Source

(defmacro as->
  "Binds name to expr, evaluates the first form in the lexical context
  of that binding, then binds name to that result, repeating for each
  successive form, returning the result of the last form."
  {:added "1.5"}
  [expr name & forms]
  `(let [~name ~expr
         ~@(interleave (repeat name) (butlast forms))]
     ~(if (empty? forms)
        name
        (last forms))))

Example 1

Edit
;; `as->` does _not_ implicitly place arguments as clj::clojure.core/->
;; or clj::clojure.core/->> will. `as->` through a constant expression
;; such as a map will generate that constant.
(as-> 1 v
      2
      {2 3})
;; => {2 3}

Example 2

Edit
(as-> [1 2 3] v
      (cons 0 v)     ;; v is (0 1 2 3)
      (concat v [4]) ;; v is (0 1 2 3 4)
      (second v))    ;; => 1
;; => 1

Uses on crossclj