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