为什么在Erlang中lists:zf/2是filtermap/2的别名?这是一个未记录但在列表中导出的函数:模块。实现如下:
zf(F, L) -> filtermap(F, L).
令我困惑的是:
lsmd5eda1#
正如Erlang wrote in 2016的共同发明者Robert Virding所说:lists:zf/2函数出现在列表解析之前,它是map和filter的组合,就像从一组规则中描述一个集合一样,因此有了基于Zermelo-Fraenkel的名称,它也被称为lists:filtermap/2,但这有什么乐趣呢?所以,你的猜测完全正确。
nfg76nw02#
我以前的答案完全正确,它确实代表Zermelo-Fraenkel。选择这个名字是为了开个玩笑。在那个年代,我们可以这样做。这类似于为什么我们用进程信息中的“减少”来衡量一个进程完成了多少工作,基本上是函数调用的数量。最初,很久以前,Erlang是在Prolog中实现的,在那里他们有减少而不是函数调用,我们决定把它当作一个笑话。任何认为它与函数语言理论有关的建议都是错误的。
2条答案
按热度按时间lsmd5eda1#
正如Erlang wrote in 2016的共同发明者Robert Virding所说:
lists:zf/2函数出现在列表解析之前,它是map和filter的组合,就像从一组规则中描述一个集合一样,因此有了基于Zermelo-Fraenkel的名称,它也被称为lists:filtermap/2,但这有什么乐趣呢?
所以,你的猜测完全正确。
nfg76nw02#
我以前的答案完全正确,它确实代表Zermelo-Fraenkel。选择这个名字是为了开个玩笑。在那个年代,我们可以这样做。
这类似于为什么我们用进程信息中的“减少”来衡量一个进程完成了多少工作,基本上是函数调用的数量。最初,很久以前,Erlang是在Prolog中实现的,在那里他们有减少而不是函数调用,我们决定把它当作一个笑话。任何认为它与函数语言理论有关的建议都是错误的。