如何在 LISP 中定义 LAMBDA 函数?
How can I define the LAMBDA function in LISP?
我根本无法使用 lambda 函数,因为出现以下错误:
apply/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。
这里有什么问题?
使用 (MAPCAR #'(LAMBDA (e) (count_atoms m e)) ...
,加上 "sharp" 符号。与apply
相同,使用#'+
.
写#'(lambda .... )
和写(function (lambda .... ))
是一样的。还有一个宏 lambda
可以让你只写 (lambda ... )
就可以了。
另见:
我根本无法使用 lambda 函数,因为出现以下错误: apply/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。
这里有什么问题?
使用 (MAPCAR #'(LAMBDA (e) (count_atoms m e)) ...
,加上 "sharp" 符号。与apply
相同,使用#'+
.
写#'(lambda .... )
和写(function (lambda .... ))
是一样的。还有一个宏 lambda
可以让你只写 (lambda ... )
就可以了。
另见: