什么是列表:zf/2 (Erlang)?

Max*_*ber 7 erlang

为什么 list:zf/2 是 Erlang 中 filtermap/2 的别名?

这是列表中的一个未记录但导出的函数:模块。这是实现:

zf(F, L) ->
    filtermap(F, L).
Run Code Online (Sandbox Code Playgroud)

我感到困惑的是:

  • 这是为了什么?
  • “zf”代表什么?“Zermelo-Fraenkel”?

ber*_*eal 7

正如 Erlang 的共同发明者 Robert Virding在 2016 年写道

list:zf/2 函数出现在列表推导式之前,是 map 和 filter 的组合。就像从一组规则中描述一组。因此,基于 Zermelo-Fraenkel 的名称。它也被称为 list:filtermap/2 但它的乐趣在哪里?

所以,你的猜测是绝对正确的。

  • 我猜罗伯特·维尔丁别无选择 (2认同)

rvi*_*ing 7

我的旧答案是完全正确的,它确实代表 Zermelo-Fraenkel。选择这个名字有点开玩笑。那个时候我们可以这样做。

这类似于为什么我们在流程信息中使用“减少”来衡量流程完成了多少工作,基本上是函数调用的数量。最初,Erlang 是在 Prolog 中实现的,在那里他们减少了函数调用而不是函数调用,我们决定把它当作一个笑话。任何关于它与函数式语言理论有关的建议都是错误的。