GNU bug report logs -
#37461
Methods added to primitive generics don't always work
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Hi Rob,
I left GOOPS development at Guile version 1.8. The way this was then
intended to work was that
(define-generic equal?)
means that you want to create a new generic equal?. This discards the old
binding for equal?.
(define-method (equal? (a <string>) (b <string>)) ...)
on the other hand, means that you want to *extend* the current behavior of
equal? with a specialization to two strings. The method is then added to
equal?, which in guile-1.8 was from scratch a "primitive-generic".
Here's the actual output of guile-1.8:
guile> equal?
#<primitive-generic equal?>
guile> (use-modules (oop goops))
guile> (define-method (equal? (a <string>) (b <string>)) (string=? a b))
guile> equal?
#<primitive-generic equal?>
guile> (primitive-generic-generic equal?)
#<<generic> equal? (2)>
guile> (define-generic equal?)
guile> equal?
#<<generic> equal? (0)>
I don't know if the changes between 1.8 and 2.2.6 is intentional or a bug.
Does someone here know?
Best regards,
Mikael
On Sat, Sep 21, 2019 at 7:09 PM Rob Browning <rlb <at> defaultvalue.org> wrote:
> Rob Browning <rlb <at> defaultvalue.org> writes:
>
> > A re-export doesn't affect the module using the re-exporter, and export
> > and replace both fail with "Unbound variable: equal?", even though
> > there's a (define equal? ...) in the module.
>
> Perhaps there was something else going on, but now :replace does appear
> to work, e.g. if I define a completely new generic and then
>
> (define equal? new-equal)
>
> a "replace: (equal?)" in the define-module does appear to work when you
> use the module.
>
> Though define-method still ignores attempts to specialize (or change the
> specialization) for existing types like <string>, etc. (as mentioned in
> my other message).
>
> Thanks
> --
> Rob Browning
> rlb @defaultvalue.org and @debian.org
> GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
> GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4
>
>
>
>
[Message part 2 (text/html, inline)]
This bug report was last modified 5 years and 261 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.