用短路来证明真理

Tom*_*mmy 0 erlang functional-programming

我想知道在一些非常大的列表中f(X)是否适用于所有人.现在我有:XL

lists:foldl(fun(X, Last) -> f(X) andalso Last end, true, L)
Run Code Online (Sandbox Code Playgroud)

问题是我不认为这种短路.即使它的第一个元素是错误的,L它仍然会一直持续着false.

是否有折叠标志,这样会短路或我可以使用的其他功能?

我现在看到有一个被调用的函数,all但它没有说它是否短路.

Dog*_*ert 5

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)