遗产的monad运营商的名字

Seb*_*raf 6 monads haskell

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

我所经历的所有材料都是指return单位图和join乘法图(我的名字是"加入").因为>>=或者bind我甚至没有找到一个在数学中常见的名字.相反,我遇到了它的翻转形式,lift或者 - *,这反过来对我有意义.

实际问题(tldr):

  1. 为什么使用"返回"而不是"单位"?
  2. 为什么"绑定"被创造为命名法?
  3. 数学世界中有"绑定"的名称吗?
  4. 名称"绑定"和"返回"应该意味着什么语义?

Mig*_*Mit 9

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

至于bind数学世界中的模拟,google"Kleisli triple".

  • 顺便说一句,“return”的命名经常被认为是一个错误,因为除了最简单的情况之外,它的行为根本不像命令式“return”。 (2认同)