Tom*_*mmy 0 erlang functional-programming
我想知道在一些非常大的列表中f(X)
是否适用于所有人.现在我有:X
L
lists:foldl(fun(X, Last) -> f(X) andalso Last end, true, L)
Run Code Online (Sandbox Code Playgroud)
问题是我不认为这种短路.即使它的第一个元素是错误的,L
它仍然会一直持续着false
.
是否有折叠标志,这样会短路或我可以使用的其他功能?
我现在看到有一个被调用的函数,all
但它没有说它是否短路.
lists:foldl/3
没有办法停止折叠并立即返回一个值.你可以使用lists:all/2
这个,如果传递的函数返回false
列表的任何项目,它将停止处理列表的其余部分:
lists:all(fun(X) -> f(X) end, L)
% or
lists:all(fun f/1, L)
Run Code Online (Sandbox Code Playgroud)