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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en