Scheme 方案联合两个列表
我正在编写一个scheme程序,它接受两个列表并显示列表的并集。这是我的密码Scheme 方案联合两个列表,scheme,Scheme,我正在编写一个scheme程序,它接受两个列表并显示列表的并集。这是我的密码 (define (union a b) (cond ((null? b) a) ((element? (car b) a) (union a (cdr b))) (else (union (cons (car b) a) (cdr b))))) 当我使用(union'(1 2 3)'(2 4 2))调用该方法时,我得到一个错误 Exception: variabl
(define (union a b)
(cond ((null? b) a)
((element? (car b) a)
(union a (cdr b)))
(else (union (cons (car b) a) (cdr b)))))
当我使用(union'(1 2 3)'(2 4 2))
调用该方法时,我得到一个错误
Exception: variable element? is not bound.
当我调用该方法时,我做错了什么?谢谢。这只意味着找不到“元素”的定义。将其替换为“成员”(球拍中的内置功能)可使其正常工作:
(define (union a b)
(cond ((null? b) a)
((member (car b) a)
(union a (cdr b)))
(else (union (cons (car b) a) (cdr b)))))
(union '(1 2 3) '(2 4 2))
输出:
'(4 1 2 3)
元素?
在任何方案报告中都不是基元。有member
(equal?
)、memv
(eqv?
)和memq
(eq?
)。对于数字,memv
是最有效的,而member
将处理更多的数据类型并使其更通用。