【发布时间】:2011-07-07 07:02:57
【问题描述】:
给定一个函数:
min(A, B) when A =< B -> A;
min(_A, B) -> B.
我可以在函数foldl中以与此类似的方式使用它吗:
lists:foldl(fun min/2, 0, [1,2,3,4,5,6,7,8,9,10])
我相信这是不可能的,因为我必须设置一个将与列表的其余部分进行比较的初始值,例如。 G。没有我能想到的身份功能。我说的对吗?
语法是用 Erlang 编写的,但非 Erlang 程序员也应该可以阅读。
【问题讨论】:
-
你不能用
head作为初始值吗? -
我想我可以,如下所示,这会在空列表上崩溃。
-
Yasir 和 Adam 的回答都很好,根据上下文,在空列表上崩溃可以接受也不能接受。顺便说一句,修复了您的示例,因此可以编译它。
-
谢谢,@Peer。另外,我认为
undefined没有多大意义,例如,请参阅"Best explanation for Languages without Null"。 -
@Yasir。我同意这一点。
标签: list functional-programming erlang higher-order-functions fold