【发布时间】:2012-01-21 03:04:41
【问题描述】:
我正在尝试选择 Lisp 作为我的新语言,但在解决如何让函数的某些部分对传递给它的列表的每个元素起作用时遇到了一些问题。
为了学习如何解决这个问题,我正在尝试编写一种相当基本的除法形式,当列表中的一个元素为 0 时不会发出嘶嘶声(而是只返回 0)
(defun divtest (elements)
(dolist (x elements)
(if (zerop x) 0 () )
(/ elements)))))
我尝试将其运行为:
(divtest '(20 2 5))
产量:
*** - /: (20 2 5) is not a number
失败点似乎源于这样一个事实,即在将列表中的元素传递给函数之前,我没有“提取”它们(在这种情况下,/ 和 dolist 都没有按预期工作,因为 x 永远不会评估为0)。 如果我是对的,有人可以告诉我如何执行这种“提取”吗?
注意:这个问题与 one that I've asked earlier 有关,但由于我不清楚先前答案的哪一部分实际上允许它按预期工作以解决这个特定问题,我决定进一步深入基础知识
【问题讨论】:
标签: lisp common-lisp