问题:
((lambda (x y) (x y)) (lambda (x) (* x x)) (* 3 3))
这是期中考试的第一名,我输入“81 9”,他以为我忘记划掉 lawl,所以我划掉了 81,然后他就哇哇大叫。不管怎样,我不明白为什么是 81。
我明白为什么 (lambda (x) (* x x)) (* 3 3) = 81
,但是第一个 lambda 我不明白那里的 x 和 y 值是什么,以及[body] (x y)
是。
所以我希望有人能向我解释为什么第一部分看起来没有任何作用。
最佳答案
这需要一些缩进来澄清
((lambda (x y) (x y))
(lambda (x) (* x x))
(* 3 3))
(lambda (x y) (x y))
;以y
作为唯一参数调用x
。(lambda (x) (* x x))
;评估为其参数的平方。(* 3 3)
;评估为 9
所以整个事情的意思是:“以 9 作为参数调用 square 函数”。
编辑:同样的事情可以写成
((lambda (x) (* x x))
(* 3 3))
我想这个练习的目的是强调评估方案形式如何涉及隐式函数应用。
关于lisp - 有人可以帮忙解释一下这个计划程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223468/