Given the function

        (defn replace-syms
           [sym-map expr]
           (let [replace #(replace-syms sym-map %)]
              (cond (contains? sym-map expr) (get sym-map expr)
                    (list? expr) (map #(replace-syms sym-map %) expr)
                    (vector? expr) (into [] (map replace expr))
                    (map? expr) (into {} (map replace (seq expr)))
                    (set? expr) (set (map replace expr))
                    true expr)))

and the definition

        (def m {:a 1 :b :a})

I'd expect the results of

        (replace-syms m (vals m))

and

        (replace-syms m '(1 :a))

to be the same, but they aren't:

user=> (replace-syms m (vals m))
(1 :a)
user=> (replace-syms m '(1 :a))
(1 1)
user=> (= (vals m) '(1 :a))
true

Does anyone have an explanation?

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
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to