我需要一个程序,它将列表作为输入,并将列表中的每个元素转换为原子。这是我到目前为止所做的,但我一直遇到错误。
(define make-lat
(lambda (l)
(cond
((null? l) (quote ()))
(else
(cond
((list? (car l))
(cons (caar l)
make-lat (cdr l)))
(else
((atom? (car l))
(cons (car l)
(make-lat(cdr l)
)))))))))
有人能帮助我吗?
答案 0 :(得分:3)
您的代码对我来说看起来有点混乱,我想您可能想要考虑遵循How To Design Programs设计方案中的步骤:
第一步:你能为你的程序写一个目的陈述吗?它应该说明这个功能是做什么的。
第二步:你能写一份合同吗?它应该说明程序采用什么样的数据,以及 它产生了什么。您必须具体,在这里,您指定的任何类型的数据必须是内置的或具有明确的“数据定义”。
第三步:编写一些测试用例!提供样本输入和您期望的输出。
要获得更多设计配方,请查看How To Design Programs。
答案 1 :(得分:1)
你的问题看起来像是家庭作业。
以下是您可以尝试和调试的一些事项。
(null? '(1 2 3))
或(null? '())
检查单个S-Exps。你确定你打电话的每个功能都有开启和关闭的功能。
作为提示,简化您的cond。你不需要筑巢。你可以逐一列出所有条件。