On Friday, 5 July 2013 16:52:10 UTC+1, Laurent PETIT wrote: > 2013/7/5 Mikera <mike.r.an...@gmail.com <javascript:>>: > > I really like the as-> macro for this kind of thing. > > > > (as-> (something) x > > (if (test1 x) (transform1 x) x) > > (if (test2 x) (transform2 x) x) > > (do-something-else-with x y) > > (if (test3 x) (transform3 x) x)) > > > > Advantages: > > - It's part of core in 1.5 > > - It's a macro and compiles down to efficient code > > - You can easily mix in other kinds of transforms (as demonstrated > above) > > Yep, indeed with as-> you can do this without repeating x as in the > let bindings, that's already better. > > Is and-as-> a combo of some-> and as-> ? (in which case, could be be > named some-as-> ?) >
Hmmm interesting thought. I guess it's pretty close to being a combination of the two. But overall I think some-> is a badly named macro: it behaves more like "and" than "some", since it doesn't use a predicate, and it threads a value through all steps as long as it keeps succeeding. Hence, I still think that and-as-> is a better / more consistent name for what my macro actually does. > > I also wrote a variant of this in my clojure-utils library that is very > useful: the "and-as->" macro does exactly the same thing but bails out early > if it finds a false or nil value. This turns out to be extremely useful for > state-transformer type algorithms where you need to backtrack if a step > doesn't succeed. > -- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.