【发布时间】:2013-06-27 11:58:33
【问题描述】:
我正在尝试编写一个方案函数,该函数将返回在输入列表中找到的唯一原子。
> (unique-atoms '(a (b) b ((c)) (a (b))))
(a c b)
> (unique-atoms '(a . a))
(a)
> (unique-atoms '())
()
我开始考虑这样的事情
(define (unique-atoms l)
(if (null? l)
'()
(eq? (car (l) unique-atoms(cdr (l))))))
但我不知道如何收集唯一的原子,并在递归检查所有内容的同时创建一个新列表。
【问题讨论】:
-
(car (l))和(cdr (l))(当l是一个列表时)是错误的。它们应该是(car l)和(cdr l)。