[Bese-devel] Lisp question

Waldo Rubinstein waldo at trianet.net
Thu Jan 5 19:40:10 UTC 2006


Thanks a bunch. That clarifies it perfectly.

- Waldo

On Jan 5, 2006, at 2:02 PM, R. Mattes wrote:

> On Thu, 2006-01-05 at 13:27 -0500, Waldo Rubinstein wrote:
>> I apologize for posting this Lisp-related question here, but I have
>> been looking for a Lisp mailing list and could not find it. Since
>> I've been learning Lisp to use UCW, I hope you guys understand me.
>> Addtionally, If anyone can point me to a Lisp mailing list, I would
>> appreciate it.
>>
>> Anyway, I'm developing a small test program with multiple modules. I
>> defined a file as:
>>
>> (defpackage :my-package (:use common- 
>> lisp :it.bese.ucw :it.bese.yacml))
>> (in-package my-package)
>>
>> (defclass my-class () (attr1 attr2 attr3))
>>
>> (defun get-my-class ()
>>    (let ((klass (make-instance 'my-class)))
>>      (setf (slot-value klass 'attr1 123))
>>      (setf (slot-value klass 'attr2 456))
>>      (setf (slot-value klass 'attr3 789))
>>      klass))
>>
>> When in REPL, if I do:
>>
>> CL-USER> (in-package my-package)
>> MY-PACKAGE> (setf klass (my-package::get-my-class))
>> #<MY-PACKAGE::MY-CLASS #x8A98CAE>
>>
>> MY-PACKAGE> (slot-value klass 'attr1)
>> 123
>>
>> However, when I do the following at the REPL:
>>
>> MY-PACKAGE> (in-package cl-user)
>> CL-USER> (setf klass (my-package::get-my-class))
>> #<MY-PACKAGE::MY-CLASS #x8A98CAE>
>>
>> CL-USER> (slot-value klass 'attr1)
>>
>> I get a debug window:
>>
>> #<MY-PACKAGE:MY-CLASS #x8A98CAE> has no slot named ATTR1.
>>    [Condition of type SIMPLE-ERROR]
>>
>> It seems as if when I'm not in my package, I cannot refer to class
>> attributes defined there. Help please.
>
> That one is easy: a slot name is a symbol. All symbols live in
> packages. You need to call:
>
>  (slot-value klass 'my-pacakge::attr1)
>
> [this looks slightly ugly. But then, direct access to slots
> isn't either, use accessors and export those from my-package]
>
>  HTH Ralf Mattes
>
>
>> Thanks,
>> Waldo
>>
>> _______________________________________________
>> bese-devel mailing list
>> bese-devel at common-lisp.net
>> http://common-lisp.net/cgi-bin/mailman/listinfo/bese-devel




More information about the bese-devel mailing list