【发布时间】:2017-06-14 19:57:14
【问题描述】:
我刚开始学习 lisp,有点困惑为什么编译器不将括号中的简单整数计算为该整数的值。
在 REPL 中,当我执行 (+ 3 2) 时,我得到 5,但是当我执行 (+ 3 (2)) 时,我得到一个错误,而我认为表达式 (2) 的值也应该是 2。很明显,这里有一些重要的事情我无法指出 - 2 和 (2) 之间有什么区别?任何帮助将不胜感激,因为这似乎是 lisp 工作方式的基础。
【问题讨论】:
-
不幸的是,这完全没有意义,因为 Lisp 没有也不应该像你描述的那样表现。
-
是的,你是对的。我在问题的一部分中犯了一个错误:第一部分 [我写了关于 (2) 返回 2 的地方] 是在不同的 lisp 中。我错误地认为,由于第二部分的行为 [(+ 3 (2)) 不同于 (+ 3 2)] 在两个 lisps 中是一致的,因此第一部分的行为也必须相同。为混乱道歉。我现在已经删除了第一部分。尽管如此,问题的核心仍然(相同)。
-
I think the value of the expression (2) should also be 2- 你为什么会“这么想”?为什么不阅读 Lisp 介绍来获得基础知识呢?这是一个很好的初学者介绍,我会推荐:cs.cmu.edu/~dst/LispBook 该页面上可以免费下载这本书。 -
我实际上是在阅读一本书(Paul Graham 的书)。在第二章,他实际上是从语言开始的,我看到了我写的形式的陈述,所以我尝试了一些我自己的——包括那个不起作用的。该章接下来的几节没有讨论为什么
(2)与2不同,因此我提出了关于SO 的问题。 -
为什么不阅读那本书的第 8 页和第 9 页(Paul Graham 的那本书)?
标签: lisp