为什么在Haskell Monads中将"bind"写为>> =?

key*_*rks 6 monads haskell

Haskell Monads中语法">> ="和">>"的起源是什么?我不是在寻找Monads如何工作的解释,而是为什么语言设计者选择了这种语法.对我而言,">> ="和">>"似乎有点武断,从未有过直觉.有没有人有直观的解释?这是来自类别理论的语法吗?

dup*_*ode 8

m >>= k建议"将计算结果提供m给函数k"; m >> n建议"运行m计算,然后n计算".

  • @CommuSoft是的,但徽标相对较新.它于2009年被选中.Haskell 1.0于1990年发布,甚至没有monad.它们是从1996年开始在Haskell 1.3中引入的.因此,徽标肯定不是选择名称的原因.相反,它是相反的.Monads被认为是Haskell的一个重要特性,而bind的语法选择对于Haskell来说是相当独特的,因此现在它的徽标就反映出来了. (7认同)
  • @Sebastian我们必须记住,最初将monad引入Haskell的是I/O,在那种情况下,`>>`的意思是 - 然后,就像命令式排序一样,匹配直觉.由于鸟瞰视图将monad视为各种命令式语义的功能实现,因此这个想法更精确,更通用.推荐阅读:[Wadler关于monad的论文](http://homepages.inf.ed.ac.uk/wadler/topics/monads.html); [Haskell的历史:在课堂上懒惰](http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/)了解历史背景. (2认同)