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

我正在编写一个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: 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
将处理更多的数据类型并使其更通用。