Haskell 中 (>>) 运算符的正确名称是啥?

Posted

技术标签:

【中文标题】Haskell 中 (>>) 运算符的正确名称是啥?【英文标题】:What is the proper name for (>>) operator in Haskell?Haskell 中 (>>) 运算符的正确名称是什么? 【发布时间】:2021-07-11 08:03:16 【问题描述】:

一元(>>) :: Monad m => m a -> m b -> m b 运算符是众所周知的。我想知道它叫什么名字。

在this Haskell tutorial 和this one 中,他们将此运算符称为“then”。这是一个不错的名字,就 do-notation 而言,它非常有意义。一个小缺点是与三元运算符的 then 发生冲突。 在我的母语 Haskell 传统中,我们称其为 "усечённое связывание",翻译为 "truncated bind"。这在俄语中可能有点不方便,因为它与 "bind's section" 的翻译有冲突,但我在英语中没有看到任何类似的问题。有没有人在英文中使用这样的名字或类似的名字?一种诗意的表达方式可能是"frustum"

有没有人为操作员使用任何其他名称?哪个是首选?

【问题讨论】:

大家都叫它then,没错:wiki.haskell.org/Pronunciation,***.com/q/37136294/1048572,***.com/q/7746894/1048572 为了消除歧义,我把它读作“然后”。 "sequence"是名字"then"是读码时的读音。 @ThomasM.DuBuisson 坦率地说,我最不喜欢“序列”,因为还有另一个函数叫做"sequence",它经常出现在单子代码中。与其他人不同的是,这次碰撞似乎很严重。 关键是将它与<*区分开来,一种或另一种。我对>>*> 使用“then”或“and then”,对<* 使用“before”。 【参考方案1】:

我们称它为“短鱼”。 (因为>=> 是“鱼”,而>> 是较短的身体。)

或者可能是“fsh”,一种没有i内部部分的“鱼”。

由于我看到(.).(.) 运算符被某个名称调用,我可能还建议您使用另一个名称调用>>,您可以通过浏览这篇文章的编辑历史发现...

另一种可能性是...... chicane 运算符

【讨论】:

@ZhiltsoffIgor,我建议了第三个可能的名字。 我喜欢你的思维方式;)。 我不认为 *** 是发明名字的好地方。 @ZhiltsoffIgor,我想我有“明确”的答案。

以上是关于Haskell 中 (>>) 运算符的正确名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章

PureScript 等价于 Haskell 的 >> 运算符

Haskell 有像 Python 和 Ruby 这样的 splat 运算符吗?

Haskell中()的默认定义如何工作?

将定点运算符翻译成 Haskell 语言

Haskell 数据类型实例作为运算符

Haskell中的过载角括号作为内积运算符