On 2 December 2010 07:06, Nala Ginrut <nalaginrut@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