unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* goops and equal?
@ 2014-11-10 12:57 Jan Nieuwenhuizen
  2014-11-10 13:03 ` Nala Ginrut
  2014-11-11 16:17 ` Mark H Weaver
  0 siblings, 2 replies; 5+ messages in thread
From: Jan Nieuwenhuizen @ 2014-11-10 12:57 UTC (permalink / raw)
  To: guile-user

Hi,

In the example below, my implementation of equal? is only being 
used if both types are the same.  That surprised me; the manual
says equal? becomes a generic and for normal generics this works
as I expect.

How do I get the magic equal? to do what show the same result as the
simple generic type-equal?

And also, do we want such surprises?

Greetings,
Jan

(read-set! keywords 'prefix)
(use-modules (oop goops))

(define-class <type> ()
  (name :accessor .name :init-value #f :init-keyword :name))

(define-method (equal? (a <type>) (b <type>))
  (display "<type>equal?\n")
  (eq? (.name a) (.name b)))

(define-method (equal? (a <type>) (b <symbol>))
  (display "<type0>equal?\n")
  (eq? (.name a) b))

(define-method (type-equal? (a <type>) (b <symbol>))
  (display "<type1>equal?\n")
  (eq? (.name a) b))

(format #t "equal?: ~a\n" (equal? (make <type> :name 'a) (make <type> :name 'a)))
(newline)
(format #t "equal?: ~a\n" (equal? (make <type> :name 'a) 'a))
(newline)
(format #t "type-equal?: ~a\n" (type-equal? (make <type> :name 'a) 'a))
(newline)


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-11-13 16:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-10 12:57 goops and equal? Jan Nieuwenhuizen
2014-11-10 13:03 ` Nala Ginrut
2014-11-11 16:17 ` Mark H Weaver
2014-11-12 13:55   ` Jan Nieuwenhuizen
2014-11-13 16:56     ` Mark H Weaver

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).