From: Daniel B. <db...@ya...> - 2009-09-07 22:36:07
|
I think I might be doing something horribly wrong (I'm a bit new at this), but for some reason I can't look up the reader functions for a class using slot-definition-readers. I've narrowed the code down to a very simple testcase, eliminating all the libraries and such that I'm using. I've tried it in SBCL 1.0.30 packaged by my distribution and 1.0.31.2 that I compiled myself. Here's the code: (defclass foo () ((num :reader num :initarg :num :initform 42))) (sb-mop:slot-definition-readers (first (sb-mop:class-slots (find-class 'foo)))) Am I making a mistake of some kind? Could this be a bug in SBCL? Thanks for you help db48x |
From: Stas B. <sta...@gm...> - 2009-09-07 23:00:53
|
Daniel Brooks <db...@ya...> writes: > I think I might be doing something horribly wrong (I'm a bit new at > this), but for some reason I can't look up the reader functions for a > class using slot-definition-readers. I've narrowed the code down to a > very simple testcase, eliminating all the libraries and such that I'm > using. I've tried it in SBCL 1.0.30 packaged by my distribution and > 1.0.31.2 that I compiled myself. Here's the code: > > (defclass foo () > ((num :reader num :initarg :num :initform 42))) > > (sb-mop:slot-definition-readers > (first (sb-mop:class-slots (find-class 'foo)))) > (sb-mop:slot-definition-readers (first (sb-mop:class-direct-slots (find-class 'foo)))) => (NUM) -- With best regards, Stas. |
From: Daniel B. <db...@ya...> - 2009-09-07 23:46:54
|
Stas Boukarev <sta...@gm...> writes: > Daniel Brooks <db...@ya...> writes: > >> I think I might be doing something horribly wrong (I'm a bit new at >> this), but for some reason I can't look up the reader functions for a >> class using slot-definition-readers. I've narrowed the code down to a >> very simple testcase, eliminating all the libraries and such that I'm >> using. I've tried it in SBCL 1.0.30 packaged by my distribution and >> 1.0.31.2 that I compiled myself. Here's the code: >> >> (defclass foo () >> ((num :reader num :initarg :num :initform 42))) >> >> (sb-mop:slot-definition-readers >> (first (sb-mop:class-slots (find-class 'foo)))) >> > > (sb-mop:slot-definition-readers > (first (sb-mop:class-direct-slots (find-class 'foo)))) > => (NUM) Yes, that's what I expect, but for some reason I'm only getting NIL. How can I figure out why it's doing this? db48x |
From: Stas B. <sta...@gm...> - 2009-09-08 00:45:47
|
Daniel Brooks <db...@ya...> writes: > Stas Boukarev <sta...@gm...> writes: > >> Daniel Brooks <db...@ya...> writes: >> >>> I think I might be doing something horribly wrong (I'm a bit new at >>> this), but for some reason I can't look up the reader functions for a >>> class using slot-definition-readers. I've narrowed the code down to a >>> very simple testcase, eliminating all the libraries and such that I'm >>> using. I've tried it in SBCL 1.0.30 packaged by my distribution and >>> 1.0.31.2 that I compiled myself. Here's the code: >>> >>> (defclass foo () >>> ((num :reader num :initarg :num :initform 42))) >>> >>> (sb-mop:slot-definition-readers >>> (first (sb-mop:class-slots (find-class 'foo)))) >>> >> >> (sb-mop:slot-definition-readers >> (first (sb-mop:class-direct-slots (find-class 'foo)))) >> => (NUM) > Note the difference, this is class-direct-slots, not class-slots. slot-definition-readers is defined only for direct slots definitions. http://www.lisp.org/mop/dictionary.html#slotd-mo-readers -- With best regards, Stas. |