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.


Reply via email to