On 31 May 2010, at 10:28, Michael Jaaka wrote:

Is that let expression helps?

(let [word (*cfg* :word)]
(filter #(= word %) [ "tom" "eat" ]))

or this is exactly the same

 (filter #(= (*cfg* :word) %) [ "tom" "eat" ])

note that *cfg* is a thread binded hash map

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

(defn filter-words [words]
  (filter #(= (*cfg* :word) %) words))

This looks the value corresponding to the key :word at each function call.

(let [word (*cfg* :word)]
  (defn filter-words [words]
    (filter #(= word %) words)))

This looks up the value corresponding to :word once, when the function is defined, and uses that same value whenever the function is called.

Konrad.

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