1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 17:20:29 +02:00

Enumeration set universe comparisons should be done with `equal?'

* module/rnrs/enums.scm (enum-set-union, enum-set-intersection,
  enum-set-difference): Compare enum-set universes with `equal?' to support
  sets generated using constructor syntax bound by `define-enumeration'.
* test-suite/tests/r6rs-enums.test (enum-set-union, enum-set-intersection,
  enum-set-difference): New test cases for syntactically-generated sets.
This commit is contained in:
Julian Graham 2010-11-21 15:35:44 -05:00
parent a653d32a8d
commit 015a4aaedb
2 changed files with 27 additions and 9 deletions

View file

@ -82,8 +82,8 @@
(enum-set-subset? enum-set-2 enum-set-1)))
(define (enum-set-union enum-set-1 enum-set-2)
(if (eq? (enum-set-universe enum-set-1)
(enum-set-universe enum-set-2))
(if (equal? (enum-set-universe enum-set-1)
(enum-set-universe enum-set-2))
(make-enum-set (enum-set-universe enum-set-1)
(lset-union eq?
(enum-set-set enum-set-1)
@ -91,8 +91,8 @@
(raise (make-assertion-violation))))
(define (enum-set-intersection enum-set-1 enum-set-2)
(if (eq? (enum-set-universe enum-set-1)
(enum-set-universe enum-set-2))
(if (equal? (enum-set-universe enum-set-1)
(enum-set-universe enum-set-2))
(make-enum-set (enum-set-universe enum-set-1)
(lset-intersection eq?
(enum-set-set enum-set-1)
@ -100,8 +100,8 @@
(raise (make-assertion-violation))))
(define (enum-set-difference enum-set-1 enum-set-2)
(if (eq? (enum-set-universe enum-set-1)
(enum-set-universe enum-set-2))
(if (equal? (enum-set-universe enum-set-1)
(enum-set-universe enum-set-2))
(make-enum-set (enum-set-universe enum-set-1)
(lset-difference eq?
(enum-set-set enum-set-1)