Dear all,

After playing a bit with protocols I found this (which seems odd to me):

(All of this on clojure-1.2.0-master-SNAPSHOT, downloaded with lein - i
don't know how recent it is)

user> (defprotocol Foo (foo [x] ))   ; We define a protocol Foo
user> (def bar {:foo Foo})   ; We hide it in a record
#'user/bar
user> (= (:foo bar) Foo)  ; It's still equal to itselffrom
true
user> (extend Object (:foo bar) {:foo (fn [x] :bar)})   ; We extend it
nil
user> (foo 5)   ; It works
:bar
user> (= (:foo bar) Foo)  ; it's not equal to itself anymore
false

By the way, if you look at the extenders of each:
user> (extenders (:foo bar))
nil
user> (extenders Foo)
(java.lang.Object)

Foo is extended but not its copy.

Is it what it is supposed to do?

Best regards,

Nicolas.

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