On 2 December 2010 07:06, Nala Ginrut <nalagin...@gmail.com> wrote:

> Hi, everybody!
> I got a question while I'm trying GOOPS, here is some example code pieces:
> ;;guile code
> (define-class <test> ()
>   (cache #:init-form 0)
>   (tt #:init-form 1
>       #:allocation #:virtual
>       #:slot-set! (lambda (o v)
>                        (slot-set! o 'cache
>                                      (cons v (slot-ref o 'cache)))
>                         );;end lambda
>       #:slot-ref (lambda (o) #f)  ;; ***FIXME: can I use generic "slot-ref"
> without re-define here??
>   ..........
> ;;guile code end
> -----------------------------------------------
>
> Please notice the line with "***FIXME" .I know that the "slot-set!" and
> "slot-ref" must be re-defined under "#:allocation #:virtual", but can I find
> some approach that just re-define one of them? Maybe I'll need a
> modified(with overload) "slot-set!", but I need a generic "slot-ref" in some
> circumstance. I don't know how to do. If I called "slot-ref" in the
> re-defination of "slot-ref", that would be recursively infinite.
> How can I deal with this? Any help will be appreciated, thanks!
>
I'm not sure this is what you mean... but yes, your #:slot-ref lambda can do
a slot-ref on normal slots, such as "cache", e.g.:

   #:slot-ref (lambda (o) (car (slot-ref o 'cache)))

Neil

Reply via email to