patch s:equal? in srfi 63 (from Chongkai)

svn: r6063
This commit is contained in:
Matthew Flatt 2007-04-28 00:55:51 +00:00
parent 138009b8a5
commit 6db966db0e

View File

@ -154,23 +154,21 @@
(and (s:equal? (vector-ref obj1 idx) (and (s:equal? (vector-ref obj1 idx)
(vector-ref obj2 idx)) (vector-ref obj2 idx))
(lp (sub1 idx)))))) (lp (sub1 idx))))))
(cond (and (my-array? obj1)
((my-array? obj1) (my-array? obj2)
(and (array? obj2)
(equal? (array-dimensions obj1) (array-dimensions obj2)) (equal? (array-dimensions obj1) (array-dimensions obj2))
(s:equal? (array->vector obj1) (array->vector obj2)))) (s:equal? (array->vector obj1) (array->vector obj2)))
((struct? obj1) (and (struct? obj1)
(and (struct? obj2) (struct? obj2)
(let-values (((obj1-type obj1-skipped?) (let-values (((obj1-type obj1-skipped?)
(struct-info obj1)) (struct-info obj1))
((obj2-type obj2-skipped?) ((obj2-type obj2-skipped?)
(struct-info obj2))) (struct-info obj2)))
(and (eq? obj1-type obj2-type) (and (eq? obj1-type obj2-type)
(not obj1-skipped?) (not obj1-skipped?)
(not obj2-skipped?) (not obj2-skipped?)
(s:equal? (struct->vector obj1) (s:equal? (struct->vector obj1)
(struct->vector obj2)))))) (struct->vector obj2)))))))
(else #f))))
(define (array-rank obj) (define (array-rank obj)
(if (array? obj) (length (array-dimensions obj)) 0)) (if (array? obj) (length (array-dimensions obj)) 0))