lambda - 如何在 LISP 中定义 LAMBDA 函数?

标签 lambda lisp common-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 - 如何在 LISP 中定义 LAMBDA 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29451956/

相关文章:

macros - 将其翻译成 Common Lisp

loops - 在 Common Lisp 中循环等效的有序对

c++ - Lambda 表达式、共享指针和 this 的类型

java - 如何使用 Lambda 表达式和 Stream API 或某种替代方式解析和过滤 JSP 或 JSTL 中的两个列表?

c# - 如何查看 lambda 表达式的 SQL 查询

list - LISP 非常简单的列表题

lisp - 如何定义创建函数别名的函数?

programming-languages - 哪些编程语言具有最容易实现的解释器?

amazon-web-services - 是否可以使用AWS Lambda请求oauth 2.0 token ?

LISP 列表项的总和