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

Reply via email to