我正在尝试检查两个列表是否具有相同的元素(即,当它们被视为集合时,它们是否相等)。例如,
(set-eq? '(1 2 3 4) '(2 3 4))
;=> #f
它不适用于这样的数字:
(set-eq? (1 2 3 4) '(4 3 2 1))
;=> #f, but I need #t
这是我的代码:
(define (set-eq? xs ys)
(cond ((and (null? xs) (null? ys)) #t)
((or (null? xs) (null? ys)) #f)
((equal? (car xs) (car ys)) (set-eq? (cdr xs) (cdr ys)))
(else #f)))
这段代码有什么问题?