Frequently I want to use the thread macros (-> or ->>) except I need
to thread the arguments into positions other than the first and the
last. Or sometimes I have to go back and forth between first and last
positions. Instead of alternating between -> and ->> and creating
nesting, I've been using this thread macro which replaces underscore
with the value of the previous expression.

(defmacro -->
  "Threads the expr through the forms. Replaces all underscores (_)
  with x in the form, making a list of it if it is not a list already.
  If there are more forms, inserts the first form as the last item in
  second form, etc."
  ([x form] (if (seq? form)
              (with-meta `(~(first form) ~@(replace {'_ x} (next
form))) (meta form))
              (list form x)))
  ([x form & more] `(--> (--> ~x ~form) ~@more)))

Is there a reason something like this does not exist in clojure.core?
Is this an oversight or is there a reason this is not there?

Asim

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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