(list f 1 2)和有什么区别(f 1 2)吗?
如果是,那么就(f 1 2)相当于((f 1) 2)(currying)?
如果是,那么(a b)意思是“添加b到列表末尾a”?
如果是,那么append它的作用是什么?
(list f 1 2) 和 (f 1 2) 之间有什么区别吗?
是:使用参数和(list f 1 2)调用函数,这将创建一个包含这些元素的列表。使用参数和调用函数,它执行任何定义的操作。listf12(f 1 2)f12f
(f 1 2) 是否等同于 ((f 1) 2) (柯里化)?
不,Lisp 中的函数不会自动柯里化。如果你调用一个函数,因为(f 1 2)它必须是一个真正的二进制函数,而不是一个柯里化函数。
(ab) 是指“将 b 添加到列表 a 的末尾”吗?
不,它的意思是“a用参数调用函数b”。
(list 1 2 3)是一种 Lisp 形式,它计算三个值的新列表,即1和2的值3。
(1 2 3)是一个列表并计算错误,因为第一个元素是一个数字,而不是一个函数。作为带引号的列表,它将是元素的文字列表1,2和3。
(list f 1 2)调用list评估结果的函数f,1并且2. f是一个变量,评估取其值。1并且2是对自己进行评估的数字。它返回三个元素的新列表。
(f 1 2)f在评估1和的值上调用函数2,它们正在评估自己。
((f 1) 2)在 Lisp 中无效。一些 Lisp 方言,如 Scheme,允许这样做。在 Lisp 中,函数形式的第一个元素必须是函数名(或者在 Common Lisp 中是 lambda 形式)。
(a b)a表示根据评估的值调用函数b,评估为变量的值b。
append用于附加列表。
也不,'Lisp' 不支持柯里化。
(list f 1 2)是的,和之间有明显的区别(f 1 2):
  * 第一个评估为(#the value of <f># 1 2)。
  * 第二个评估f应用到1和的结果2。
Lisp 函数不会“开箱即用”地进行柯里化,但可以定义它们来这样做。
(a b)表示将函数a应用于(的值)b。
append 需要附加列表。