【问题标题】:Heritage of the names of the monad operatorsmonad 运算符名称的继承
【发布时间】:2014-06-27 16:17:01
【问题描述】:

我目前正在阅读范畴论基础知识,并尝试从语义上理解 Haskell 分配给 monad 操作的名称。

我通过的所有材料都将return 作为单位映射,将join 作为乘法映射(我可以使用名称“join”)。对于>>=bind,我什至(还)还没有找到数学中常见的名字。相反,我遇到了它的翻转形式,lift 或 -*,这反过来又对我有意义。

实际问题(tldr):

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

【问题讨论】:

    标签: haskell monads


    【解决方案1】:

    这两个名字都来自编程,而不是数学。 return,被用作do 表达式的最后一个语句,使它看起来非常必要:do {do_something; return result}bind的名字来源于它的do翻译:action >>= \x -> something翻译成do {x <- action; something},看起来x绑定了action返回的值。

    至于bind在数学世界中的类比,谷歌“Kleisli Triple”。

    【讨论】:

    • 顺便说一句,return 的命名经常被认为是一个错误,因为除了最简单的情况外,它在任何情况下都不像命令式 return
    猜你喜欢
    • 2015-06-27
    • 2011-07-08
    • 2023-04-02
    • 1970-01-01
    • 2010-12-31
    • 2012-02-28
    • 2015-11-19
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多