例如:
(check-expect(2-list empty (list 3 4)) empty)
(check-expect(process-2-lists (list "nice" 'blue) empty)(list "nice" 'blue))
(check-expect(process-2-lists (list "nice" 'blue 5 10 5 'blue 5) (list "nice" 5 5 'red "wow")) (list 'blue 10 'blue))
我会给你一些提示,像往常一样,我希望人们自己解决他们的作业。这是学习的唯一途径!
(define (process-2-lists l1 l2)
(cond (<???> ; if the first list is empty
<???>) ; then we return the empty list
(<???> ; if the first element in l1 is not in l2 (*)
(cons <???> ; then we add it to the result using cons
(process-2-lists <???> l2))) ; and advance the recursion
(else ; otherwise
(process-2-lists <???> l2)))) ; advance the recursion adding nothing
请注意,我们只需要遍历其中一个列表,我们需要另一个来检查它。这里的关键线是用 标记的那一条(*)
。我们将如何做到这一点?好吧,您可以编写自己的帮助程序来测试另一个列表中元素的成员资格,但是如果您查看文档,您会发现您所需要的。
过滤列表 b 中的项目。
(filter
(lambda (item)
(not (member item b)))
a)