Here is another (real) example:

When I change the number of slots in a record, e.g. from

(defrecord MyRecord [slot1 slot2] ...)

to 

(defrecord Myrecord [slot1] ...)

and then call (MyRecord. :foo), clojure complains with "NoSuchMethodError 
MyRecord.<init>(Ljava/lang/Object;)

Then when I simply rename the record, e.g. to (defrecord MyRecord2 [slot1]) 
and evaluate (MyRecord2. :foo), all is fine.

It is very frustrating that I cannot reproduce this in a simple way, it 
does not always happen, only after the record has been defined for some 
time, which still makes me suspect it has to do with caching...




Op woensdag 27 februari 2013 17:19:33 UTC+1 schreef Jim foo.bar het 
volgende:
>
> I'm not sure I fully understand the problem but I'll do my best to 
> guess... 
>
> 1) are you sure you're using the protocol or are you actually trying to 
> define a method in the interface that the protocol generates? Try fully 
> qualifying the name of you protocol at the extension point... 
>
> 2)Do your protocols exist in a separate namespace? Are you reloading the 
> namespace after making changes? 
>
> Could you provide a minimal example of the problem? I've been using 
> protocols quite heavily lately and I do remember some of these issues 
> but I can't pinpoint your exact problem... 
>
> Jim 
>
> ps: are you by any chance trying to create 'mixins'? If yes remember 
> that for a protocol to be fully populated , it must be extended fully 
> per individual type (quote from the JOy of Clojure) 
>
>
> On 27/02/13 15:48, Joachim De Beule wrote: 
> > Hi all, 
> > 
> > I'm doing interactive development with emacs+clojure-mode+nrepl and 
> > I'm experiencing some seriously annoying problems with protocols and 
> > records implementing the protocols: 
> > 
> > 1) When I redefine a protocol by adding a method to it, and then 
> > re-implement a record according in accordance to the changed protocol, 
> > clojure complains that it cannot implement a method not in the 
> > protocol/interface. 
> > 
> > 2) when I change a protocol method in an existing record (e.g. by 
> > simply adding a println statement) the changes do not have any effect. 
> > 
> > These problems persist even when I do an nrepl-restart or close emacs 
> > and restart. Any ideas? 
> > 
> > Joachim 
> > -- 
> > -- 
> > You received this message because you are subscribed to the Google 
> > Groups "Clojure" group. 
> > To post to this group, send email to clo...@googlegroups.com<javascript:> 
> > Note that posts from new members are moderated - please be patient 
> > with your first post. 
> > To unsubscribe from this group, send email to 
> > clojure+u...@googlegroups.com <javascript:> 
> > For more options, visit this group at 
> > http://groups.google.com/group/clojure?hl=en 
> > --- 
> > You received this message because you are subscribed to the Google 
> > Groups "Clojure" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> > an email to clojure+u...@googlegroups.com <javascript:>. 
> > For more options, visit https://groups.google.com/groups/opt_out. 
> > 
> > 
>
>

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to