如何在LISP中定义LAMBDA功能?

时间:2015-04-04 22:13:38

标签: lambda lisp common-lisp

我无法在所有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。

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

使用(MAPCAR #'(LAMBDA (e) (count_atoms m e)) ...,使用" sharp"标志。与apply相同,请使用#'+

撰写#'(lambda .... )与撰写(function (lambda .... ))相同。还有一个宏lambda,可以让你在那里写(lambda ... )

另见: