Hi,

On May 31, 10:43 am, Konrad Hinsen <konrad.hin...@fastmail.net> wrote:

> The two expressions are equivalent. However, there is a difference  
> when you use let outside of a function definition:

I disagree. The two expressions are not equivalent and you actually
provide the explanation, why they are not. The defn does really make a
difference. (#() is the "defn")

user=> (def *cfg* {:word "tom"})
#'user/*cfg*
user=> (def s (filter #(= (:word *cfg*) %) (list "tom" "eat")))
#'user/s
user=> (def t (let [word (:word *cfg*)] (filter #(= word %) (list
"tom" "eat"))))
#'user/t
user=> [(first s) (first t)]
["tom" "tom"]
user=> (binding [*cfg* {:word "eat"}] [(fnext s) (fnext t)])
["eat" nil]

Note: I use list instead of the usual vector to avoid chunked seq
evaluation.

Sincerely
Meikel

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