【发布时间】:2012-03-06 04:29:43
【问题描述】:
我有这两个列表:
'(and 1 (or a b))
'( (a 0)(b 1) )
我是 lisp 的新手,我发现很难弄清楚如何比较这两个列表。我正在考虑创建一个比较函数,但我不知道如何逐一比较它们,因为在评估表达式之前不会返回 lisp 值。由于它们也不是相同的结构,我不能假设它们至少在结构上是相同的。任何解释这是如何工作的?
编辑:对不起,我忘了说我为什么要比较。第二个列表是假设将数字绑定到第一个列表中存在这些变量的任何位置。所以得到的第一个列表应该是:
'(and 1(or 0 1))
【问题讨论】:
-
如果您不知道如何指定解决方案的结构,您将无法编写代码。如果您手动比较以上两个列表,结果应该是什么?内置的 EQUAL 函数将返回 NIL,因为它们是不同的列表。
-
我刚加了,不好意思一开始没加
-
实际的作业问题是什么?
-
我明白了。好吧,这不是比较;那就是替代!您应该在第一个列表中实例化第二个列表中指定的变量。 CL 中有一个 SUBLIS 函数可以做到这一点。
-
哦,我明白了!我只是想靠自己来理解 lisp 控制结构。但它真的很难想象这将如何工作。我研究了这个功能,但如果我要自己尝试做,我怎么能做到呢?
标签: loops lisp common-lisp