1
3
两者的区别
现在你清楚地看到了区别:
现在你看,有了
工作,因为b c d没有被评估! 但是:
导致错误:
因为两者都不是
但你仍然可以
注意:有趣的是,并非在所有语言中,函数参数都会被计算,因为它们是函数参数。而Python对其所有函数参数的求值类似于Lisp 之前 进入和评估功能体,R不需要。 因此,函数参数的求值是处理函数参数的一种特定于Lisp的方法。(但它与大多数其他语言一样——我只想说,函数参数的求值不是一般规则)。这也是Lisp宏(和特殊形式)与Lisp函数之间的根本区别。在Lisp宏(和特殊形式)中,可以指定哪些函数参数在宏体中得到计算,哪些不得到计算。这样您就可以完全控制任何宏参数的计算。在Lisp函数中,默认情况下,所有参数在进入函数体之前都会先求值。
这也是为什么您还必须学习Lisp中的宏(指定特殊形式)的原因之一。
|
2
1
区别在于创建列表的时间。一个是由 读者 ,另一个在 运行时 . 读者负责将文本文件转换为表示代码的数据结构。这种数据结构碰巧主要是列表;这就是Lisp(列表处理)的思想。
当读者阅读
文本
有一个特殊的操作符告诉编译器
不
要进行此翻译:
撇号
表格
另一方面
只有当文本列表是常量时,才应该使用它。例如,当创建多维数组时,您可能知道它的大小总是相同的(可能这是问题的内在原因),所以您可以编写
您必须避免的一件事是修改文字数据。 |
ptb · Slime\Emacs comint在启动mpi进程时挂起 6 年前 |
Alexandru Popa · SBCL中奇怪的宏扩展错误 6 年前 |
MadPhysicist · 公共Lisp未定义分派字符 6 年前 |
Jacky · 编辑列表中的每个偶数索引元素 6 年前 |
Jorge · 在公共Lisp中初始化计数器变量 6 年前 |
Rorschach · cl循环破坏性修改cons单元 6 年前 |
Rorschach · 宏在定义时将关键帧视为true 6 年前 |
reverload · 空调内部let工作不正常 6 年前 |