gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:37 24 4
gpt4 key购买 nike

我根本无法使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com