Scheme union两个列表

时间:2017-02-20 20:11:42

标签: 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. 

当我打电话给方法时,我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

它只意味着"元素的定义?"找不到。用"成员替换它" (Racket中的内置函数)使其工作:

(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)