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

4c8rllxm  于 2022-12-16  发布在  Erlang
关注(0)|答案(2)|浏览(185)

为什么在Erlang中lists:zf/2是filtermap/2的别名?
这是一个未记录但在列表中导出的函数:模块。实现如下:

zf(F, L) ->
    filtermap(F, L).

令我困惑的是:

  • 这是干什么用的?
  • “zf”代表什么?“策梅洛-弗伦克尔”?
lsmd5eda

lsmd5eda1#

正如Erlang wrote in 2016的共同发明者Robert Virding所说:
lists:zf/2函数出现在列表解析之前,它是map和filter的组合,就像从一组规则中描述一个集合一样,因此有了基于Zermelo-Fraenkel的名称,它也被称为lists:filtermap/2,但这有什么乐趣呢?
所以,你的猜测完全正确。

nfg76nw0

nfg76nw02#

我以前的答案完全正确,它确实代表Zermelo-Fraenkel。选择这个名字是为了开个玩笑。在那个年代,我们可以这样做。
这类似于为什么我们用进程信息中的“减少”来衡量一个进程完成了多少工作,基本上是函数调用的数量。最初,很久以前,Erlang是在Prolog中实现的,在那里他们有减少而不是函数调用,我们决定把它当作一个笑话。任何认为它与函数语言理论有关的建议都是错误的。

相关问题