I tried to call merge on a deftype implementing IPersistentMap, and got an exception:
user> (deftype Foo [a b] clojure.lang.IPersistentMap) #'user/Foo user> (Foo 1 2) #:Foo{:a 1, :b 2} user> (merge (Foo 1 2) {:a 3}) ; Evaluation aborted. nth not supported on this type: PersistentArrayMap [Thrown class java.lang.UnsupportedOperationException] Restarts: 0: [ABORT] Return to SLIME's top level. Backtrace: 0: clojure.lang.RT.nth(RT.java:811) 1: user.Foo__15735.cons(NO_SOURCE_FILE:1) 2: clojure.lang.RT.conj(RT.java:534) 3: clojure.core$conj__3951.invoke(core.clj:67) 4: clojure.core$merge__4623$fn__4624.invoke(core.clj:1919) 5: clojure.core$reduce__4135.invoke(core.clj:665) 6: clojure.core$reduce__4135.invoke(core.clj:656) 7: clojure.core$merge__4623.doInvoke(core.clj:1919) 8: clojure.lang.RestFn.invoke(RestFn.java:422) 9: user$eval__15820.invoke(NO_SOURCE_FILE:1) 10: clojure.lang.Compiler.eval(Compiler.java:5258) 11: clojure.lang.Compiler.eval(Compiler.java:5226) 12: clojure.core$eval__4674.invoke(core.clj:2018) --more-- Interestingly, drewr on IRC pointed out that (merge {:a 3} (Foo 1 2)) works. I then figured out that (merge {} (Foo 1 2) {:a 3}) works. This seems like a bug to me. Is it? Allen -- 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