这是一个家庭作业:方案,将lambda作为函数参数 - 需要帮助理解ARGS
返回包含满足给定谓词指定列表中的所有元素的列表。例如,
(filter (lambda (x) (< x 5)) '(3 9 5 8 2 4 7))
应该返回(3 2 4)。
我昨天刚刚开始计划,所以我是一个完整的noob。如果我正确理解这个函数函数调用的语法,那么“filter”是函数,“(lambda(x)(< x 5)”是参数。这与java中的匿名函数类似吗?
编辑:
我发现了一些代码从计算器另一篇文章中他们只是直出回答了这个问题:这是他们写的东西:
(define (my-filter pred lst)
(cond ((null? lst) null)
((pred (first lst))
(cons (first lst) (my-filter pred (rest lst))))
(else (my-filter pred (rest lst)))))
这是很好的,和它的作品,但在此之前我使用任何我想了解它。“pred”是一个函数,但在这种情况下,它们正在传递(< x 5)到它,它是如此莫名其妙地接受这个价值。我不明白。
有人可以向我解释在这个程序中会发生什么?我不明白正在发生的事情背后的逻辑。
只是一个迂腐的笔记。 Java没有匿名函数。它有匿名类,通常用于模拟“lambda”。 – 2012-04-27 01:33:21
历史记录:在2012年,Java没有匿名函数(也称为“闭包”)......但从Java 8(iirc)开始,它现在可以实现。 – 2017-07-11 07:46:54