Re: Bug with instance? inside deftypes

2010-11-04 Thread Christophe Grand
To me its an implementation wart which is dictated by the use of the
reflection API in the compiler.
There is some work done by Stu to create a clojure reflection API with
several backends (eg ASM or Java Reflection).
However I won't bet on the *current* compiler being fixed.

my 2 cents

Christophe

On Thu, Nov 4, 2010 at 4:09 AM, ka sancha...@gmail.com wrote:

  I would guess the problem is referring to T inside the deftype.

 This also works:

 (deftype T [] Object (equals [this o] (if (= T (class o)) true
 false)))

 But as Meikel said hope that this is not the end of the story.

 --
 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.comclojure%2bunsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en




-- 
Professional: http://cgrand.net/ (fr)
On Clojure: http://clj-me.cgrand.net/ (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

Re: Bug with instance? inside deftypes

2010-11-04 Thread ka
Christophe, Is it reasonable to assume that atleast the documentation
should be modified to reflect the situation?

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


Re: Bug with instance? inside deftypes

2010-11-03 Thread Adrian Cuthbertson
I would guess the problem is referring to T inside the deftype. This works;

(deftype T [] Object (equals [this o] (if (instance? (class this) o)
true false)))
(let [t (T.)] (.equals t t))
== true


On Wed, Nov 3, 2010 at 12:39 PM, ka sancha...@gmail.com wrote:
 Clojure 1.2.0
 1:1 user=
 1:2 user=
 1:3 user= (deftype T [] Object (equals [this o] (if (instance? T o)
 true false)))
 user.T
 1:4 user= (def t (T.))
 #'user/t
 1:5 user= (.equals t t)
 false
 1:6 user= (deftype T [] Object (equals [this o] (if (= T (class o))
 true false)))
 user.T
 1:7 user= (def t (T.))
 #'user/t
 1:8 user= (.equals t t)
 true
 1:9 user=

 (doc deftype) especially says:
 In the method bodies, the (unqualified) name can be used to name the class 
 (for calls to new, instance? etc).

 Somebody on the IRC pointed out:
 while compiling the deftype, T resolves to a different class object (a 
 compiler-generated stub class) which might conflict with the special 
 inlining of instance?

 Thanks

 --

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


Re: Bug with instance? inside deftypes

2010-11-03 Thread Meikel Brandmeyer
Hi,

On 3 Nov., 14:58, Adrian Cuthbertson adrian.cuthbert...@gmail.com
wrote:

 I would guess the problem is referring to T inside the deftype. This works;

 (deftype T [] Object (equals [this o] (if (instance? (class this) o)
 true false)))
 (let [t (T.)] (.equals t t))
 == true

I hope that this is not the end of the story. :/

Sincerely
Meikel

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


Re: Bug with instance? inside deftypes

2010-11-03 Thread ka
 I would guess the problem is referring to T inside the deftype.

This also works:

(deftype T [] Object (equals [this o] (if (= T (class o)) true
false)))

But as Meikel said hope that this is not the end of the story.

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