例1:中函数表达中 (* (- y z)) ,缺X项描述,如果改为 (* x (- y z)),则相当于(5X(20-14)=30.
问题补充中:#号无意义,省去后,函数结果为(214 315)
计算过程是:先计算 (mapcar '(lambda (z) (+ 10 z)) '(4 5 6)) ,得到(14 15 16)
再计算(mapcar '(lambda (x y) (+ x y))
(mapcar '(lambda (z) (+ 10 z)) '(4 5 6)
'(200 300)
)
等同于计算
(mapcar '(lambda (x y) (+ x y))
'(14 15 16)
'(200 300)
)
依次计算表中 (200+14=214 ), (300+15=315),得到 '(214 315),回答完毕。
祝你解决困惑。
lambda是定义匿名函数的。例子里的算法是定义了个匿名函数,有3个参数x y z 。进行了个算式计算:(y-z)* x 【这里你那个例子好像写错了,第二行应该是(* (- y z) x)】 然后用apply函数把(5 20 14)这个表传给那个匿名函数,分别作为x y z代入。执行了 20-14= 6 6*5=30. 所以最后返回30.
标签:COMMON,LISP,lambda