Let me amend:

Instead of pipe-as, I think the symbol-binding version of the macro
should be derived from the more common macro, which is -> & not pipe.
So I'd vote for pipe & a let-> that takes a bindings vector as its
first argument (sample implementation below).

Perry


(defmacro let->
  "Like ->, but takes a binding form as first argument, the bound
symbol(s) from
  which will carry the resulting value from form to subsequent form.
E.g.
    (let-> [a 1] (str "Your number is:" a) (.replace a "Your"
"My") .toUpperCase) =>
   \"MY NUMBER IS: 1\""
  ([[sym init] form]
    (if (seq? form)
      `(let [~sym ~init] ~form)
      (list 'let [sym init] (list form sym))))
  ([[sym init] form & more]
    `(let-> [~sym (let-> [~sym ~init] ~form)] ~...@more)))


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to