我无法在所有lambda函数中使用,因为我收到此错误: 应用/ funcall的参数不是函数:(LAMBDA(E)(COUNT_ATOMS M E))。
代码是:
> (DEFUN count_atoms (m l)
> (COND ((ATOM l) (COND ((EQUAL m l) 1)
> (t 0)))
> (t (APPLY '+
> (MAPCAR '(LAMBDA (e) (count_atoms m e))
> l)))))
对于
(count_atoms 3'((3 3)3(4 4)5))
它应该打印3。
这里有什么问题?
答案 0 :(得分:1)
使用(MAPCAR #'(LAMBDA (e) (count_atoms m e)) ...
,使用" sharp"标志。与apply
相同,请使用#'+
。
撰写#'(lambda .... )
与撰写(function (lambda .... ))
相同。还有一个宏lambda
,可以让你在那里写(lambda ... )
。
另见: