代码之家  ›  专栏  ›  技术社区  ›  Tommy

Foldl表示带短路的真值

  •  0
  • Tommy  · 技术社区  · 7 年前

    我想知道 f(X) 对所有人都是如此 X 在一些非常大的列表中 L 现在我有:

    lists:foldl(fun(X, Last) -> f(X) andalso Last end, true, L)
    

    问题是我不认为这是短路。即使中的第一个元素为false false .

    foldl是否有一个标志,使其短路或我可以使用的另一个功能?

    all 但它也没有说它是否短路。

    1 回复  |  直到 7 年前
        1
  •  5
  •   Dogbert    7 年前

    lists:foldl/3 无法停止折叠并立即返回值。您可以使用 lists:all/2 为此,如果传递的函数返回,它将停止处理列表的其余部分 false 对于列表中的任何项目:

    lists:all(fun(X) -> f(X) end, L)
    
    % or
    
    lists:all(fun f/1, L)