On 8/19/13 8:58 AM, Jay Fields wrote:
In the past, I've written code like the following

(defn foo [x y]
   (let [x-squared (* x x)]
     (if (pos? y)
       (+ x-squared y)
       (- x-squared y))))

However, the introduction of as-> has led me to write the following, at times

(defn foo [x y]
   (as-> (* x x) x-squared
     (if (pos? y)
       (+ x-squared y)
       (- x-squared y))))

In essence, I've started replacing single binding lets with as->. John
Hume has pointed out that as-> seems to have been introduced to work
in conjunction with ->. Which brings me to my question - do you think
it's better to use a single binding let from a readability
perspective? Are there any (performance or otherwise) impacts that I
should be aware of?

Cheers, Jay

I prefer the standard `let` in these cases for readability since `as->`, to me, implies some threading is going on. I only use `as->` when I'm already using `->` as it saves me an extra binding that breaks up the flow of the code. WRT performance, the only difference with the `as->` version is an extra rebinding of `x-squared` as this expansion shows:

(clojure.core/let [x-squared (* x x)
                   x-squared (if (pos? y)
                               (+ x-squared y)
                               (- x-squared y))]
  x-squared)


-Ben

--
--
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