为什么Haskell的`fst`和`snd`有这么短(奇怪)的名字?

use*_*392 4 convention haskell function

我是Haskell的新手,此刻真正困扰我的是为什么制作库的人添加了调用的函数fst,snd而不是像(first和)那样使用(普通)名称second.后者的名字有什么问题?

我个人觉得这些缩写可笑:"为什么snd,为什么不呢?sec,scndscd或为什么不?fir,frst,ftfrt?" 它只是缺乏风格.(但再次 - 这是个人观点)

And*_*ewC 13

很明显,这些名字被选择为3个字符长,同时尽可能清楚地说明这个词 - 除了最突出的辅音之外的所有内容.许多标准功能都有更好/更容易遵循的名称,但诚然不是全部!

这是历史事故,真的,这些名字是什么,而且我们可以做很多事情而不会让许多习惯了它们并且依赖它们的代码库很大的人烦恼.至少Haskell没有调用搜索grep!

随意编写first = fstsecond = snd在文件的顶部 - 使用您的首选名称不会花费很长时间,ghc -O2并将其编译出来.

first并且second实际上用于Control.Arrow中更复杂的东西,但是你不需要在这个阶段那么深入.

  • 在Haskell存在之前,ML对于列表析构函数有`hd`和`tl`,我认为Haskell可能继承了Miranda的`fst`和`snd`. (3认同)
  • 他们是从米兰达继承的,但特纳也没有让他们成功. (3认同)
  • @Rhymoid绝对 - 我暗示你可能想要使用`first`和`second`来获得更有趣的东西.我没有把这个作为短名称`fst`和`snd`的原因. (2认同)