[plt-scheme] equal? operator

From: Danny Yoo (dyoo at hkn.eecs.berkeley.edu)
Date: Mon Nov 21 00:03:45 EST 2005


On Sun, 20 Nov 2005, Hans Oesterholt-Dijkema wrote:

> Is it possible to extend the equal? operator for new (structure) types
> in mzscheme?

Hi Hans,


According to:

http://download.plt-scheme.org/doc/299.400/html/mzscheme/mzscheme-Z-H-4.html#node_idx_744

doing equal? on structures should just work, as long as the structures are
inspectable.  For example:

;;;;;;
> (define-struct pair (x y))
> (define p1 (make-pair 1 2))
> (define p2 (make-pair 1 2))
> (equal? p1 p2)
#f
;;;;;;

Here, because the structure isn't inspectable, equal? doesn't work.  But
if we make an inspectable structure:

;;;;;;
> (define-struct pair (x y) (make-inspector))
> (define p1 (make-pair 1 2))
> (define p2 (make-pair 1 2))
> (equal? p1 p2)
#t
;;;;;;

equal? now is allowed to do the kind of equality testing we'd expect.



Posted on the users mailing list.