"Diogo F. S. Ramos" <[email protected]> writes:
> When using GOOPS, if a class has a second slot, the #:getter procedure
> of the first slot returns the value of the second slot when applied to
> an instance of a subclass.
>
> (use-modules (oop goops))
>
> (define-class <foo> ()
> (a #:init-form 'foo #:getter foo-a)
> (b #:init-form 42))
>
> (define-class <bar> (<foo>)
> (a #:init-form 'bar))
>
> (foo-a (make <foo>)) => foo
> (foo-a (make <bar>)) => 42
>
> I expected:
>
> (foo-a (make <bar>)) => bar
>
> I'm not too familiar with GOOPS, so I'm not sure this is the right
> behavior.
Do you see this if you use #:init-value instead of #:init-form ? It
sounds to me like #:init-value is what you really want, and I suspect
you're seeing undefined behaviour that arises from giving an
unparenthesized form ('42') to #:init-form.
Neil