Here is an example of using this: (--> "hello world" (.toUpperCase _) (.toLowerCase _) (.indexOf _ "w"))
On Tue, Jul 5, 2011 at 3:50 PM, Asim Jalis <asimja...@gmail.com> wrote: > 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