lisp lambda函数
这是一个LISP lambda函数,我不明白最后一个“1”是什么?lisp lambda函数,lisp,common-lisp,Lisp,Common Lisp,这是一个LISP lambda函数,我不明白最后一个“1”是什么? 谢谢。定义:重复转换(fnx) 在对象X上重复应用函数F N次 您正在定义lambda函数,通过对整数1重复转换4次来调用它 希望能解释这一点。谷歌为重复转换返回了一个递归定义: (repeat-transformation #'(lambda (x) (* 2 x)) 4 1) 这表明1是功能操作的值。接下来的3个谷歌链接证实了这一点。lambda函数是重复转换的第一个参数。4和1分别是第二个和第三个参数 Lisp教程定义
谢谢。定义:重复转换(fnx) 在对象X上重复应用函数F N次 您正在定义lambda函数,通过对整数1重复转换4次来调用它
希望能解释这一点。谷歌为
重复转换返回了一个递归定义:
(repeat-transformation #'(lambda (x) (* 2 x)) 4 1)
这表明1
是功能操作的值。接下来的3个谷歌链接证实了这一点。lambda函数是重复转换的第一个参数。4和1分别是第二个和第三个参数
Lisp教程定义了一个重复变换函数,该函数在对象X上重复应用函数F N次。如果您的值相等,则1
是对值4
应用lambda函数的次数 是的,它在X上重复应用F N次,但是参数的顺序是fnx。很好。它提醒我们要仔细检查函数签名,而不是假设参数的顺序与文档字符串中的顺序相同。它还表明,在记录函数时,保持参数的顺序可能会有所帮助。
(defun repeat-transformation (F N X)
"Repeat applying function F on object X for N times."
(if (zerop N)
X
(repeat-transformation F (1- N) (funcall F X))))