遗产的monad运营商的名字

时间:2014-06-27 16:17:01

标签: haskell monads

我正在阅读类别理论基础知识,并尝试理解Haskell在语义上赋予monad操作的名称。

我所遇到的所有资料都将return称为单位地图,将join称为乘法图(我可以将其命名为“join”)。对于>>=bind,我甚至还没有找到一个在数学中常见的名称。相反,我遇到了翻转的形式,lift或 - *,这反过来对我有意义。

实际问题(tldr):

  1. 为什么使用“return”而不是“unit”?
  2. 为什么“绑定”被创造为命名法?
  3. 在数学世界中有“绑定”的名称吗?
  4. 名称“bind”和“return”应该暗示什么语义?

1 个答案:

答案 0 :(得分:9)

两个名字都来自编程,而不是数学。 return被用作do表达式的最后一个语句,使其看起来非常紧迫:do {do_something; return result}bind的名称来自do翻译:{{1​​}}转换为action >>= \x -> something,看起来do {x <- action; something}绑定到x返回的值}。

至于action在数学界的模拟,google“Kleisli triple”。