code is below.
Basically - if I extend a protocol on js/Object then I get an error when
calling map on a map with integer keys.
Is this a bug or an error on my part?
Cheers
Dave
Results first:
If the extend-protocol and call to 'fred' is commented, ths console shows
"START"
"one"
([2 1])
"two"
"three"
([:2 1])
"four"
"five"
([2 1])
"done"
If the extend-protocol and call to 'fred' is uncommented I get:
"START"
"one"
([2 1])
"two"
"three"
([:2 1])
"four"
Uncaught Error: No protocol method ISeqable.-seq defined for type boolean:
true
Code:
(ns ptest.main)
(defn map->js [m]
(let [out (js-obj)]
(doseq [[k v] m]
(aset out (name k) v))
out))
(defn log
([x]
(let [l (if (map? x) (map->js x) x)]
(.log js/console l)
x))
([m x]
(do (log {:msg m :data x}) x)))
(defn log-str
([x] (do (log (pr-str x)) x))
([m x] (do (log-str {:msg m :data x}) x)))
(log-str "START")
(defprotocol FRED
(fred [this] "fred"))
(log-str "one")
(log-str
(map (fn [[k v]] [k v])
{2 1}))
(extend-protocol FRED
js/Object
(fred [this] this))
(log-str "two")
(fred {})
(log-str "three")
(log-str
(map (fn [[k v]] [k v])
{:2 1}))
(log-str "four")
(def a (doall (map (fn [[k v]] [k v])
{2 1})))
(log-str "five")
(log-str a)
(log-str "done")
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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