list - 向 Scheme 中的列表添加元素

标签 list lisp scheme

我正在使用 R5RS Scheme,我只想实现一个返回两个给定列表的交集的函数,但我不能这样做,因为我无法将元素添加到列表中。这是我的代码。我该如何解决?我真的是 Scheme 的初学者 - 这是我使用 Scheme 的第一部作品。

提前致谢..

(define list3 '())
(define (E7 list1 list2)

        (cond
          ((null? list1)
          list3)
          ((member (car list1) list2) (append list3 (list (car list1))))

        )
  (cond
          ((null? list1)
          list3)
          ((not(null? list1)) (E7 (cdr list1) list2)

        )

     )


)
(E7 '(4 5) '(3 4))

最佳答案

这是一个递归版本,它执行交集而不是并集。

(define (intersect list1 list2)
  (cond ((null? list1)   list1)
        ((member (car list1) list2)   (cons (car list1) (intersect (cdr list1) list2)))
        (t   (intersect (cdr list1) list2))))

关于list - 向 Scheme 中的列表添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541872/

相关文章:

python - 在 Python 3.6 中追加迭代时重复元素

c# - 在数字列表中生成数字范围

Python:使用列表中的运算符进行数学运算

python - 写 lisp 方言

algorithm - "do"控制结构在Scheme 中起什么作用?

python - 使用 `set` 从列表创建一个集合与解压到大括号中

lisp 迭代函数总是返回 nil

Lisp - 可变大小的列表列表

list - 列表中最小元素的位置

lambda - 仅具有 lambda 表达式的阶乘函数