again, I haven't felt much pain, so I'm not sure what I'm saying is entirely 
true, but...

In the scenario I describe I have to :import the class created by defrecord to 
reference it as part of extend-protocol

For example

in foo/recs.clj
(ns foo.recs)

(defrecord ARecord [a b])

in foo/prots.clj
(ns foo.prots
  (:import [foo.recs ARecord]))

(defprotocol AProto
  (handle [o]))

(extend-protocol AProto
  ARecord
  (handle [o]
    ;; do stuff
  ))

In that case, don't  you need to record to become a class, so you can reference 
it in foo.prots :import?

I'd really love to be wrong, so I get rid of this occasional issue. =)

Cheers, Jay

On Feb 15, 2012, at 10:51 AM, Stuart Halloway wrote:

>> I think this issue is related to using
>> defrecord
>> or
>> defrecord & defprotocol
>> or
>> defrecord, defprotocol, & extend-protocol
>> 
>> I've never bothered to look into the simplest case at which it fails. I have 
>> a namespace that has my defrecord, and another namespace that defines the 
>> protocol and uses extend-protocol to add behavior for my record type. If I 
>> recompile the namespace with the protocol everything is fine, if I recompile 
>> the namespace with the defrecord the protocol stops finding the 
>> implementation for the protocol. The solution is "rm -rf classes"
>> 
>> As a work around I rm & restart my app if I ever change my record - which is 
>> very rarely.
> 
> A better solution is not to compile defrecords during development. If this is 
> the default behavior of some tools, it is anti-incremental-dev and wrong IMO.
> 
> Stu
> 
> 
> Stuart Halloway
> Clojure/core
> http://clojure.com
> 
> 
> -- 
> 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 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