gpt4 book ai didi

haskell - Monads 本质上不是 "conceptual"糖吗?

转载 作者:行者123 更新时间:2023-12-02 02:48:35 27 4
gpt4 key购买 nike

假设我们允许 两个 Haskell 中的函数类型:

  • 严格纯粹(像往常一样)
  • 可能不纯(程序)

  • 区别将是 f.x。通过将点(“.”)声明为函数名的第一个字母,将其声明为非纯过程。

    此外,我们将制定规则:
  • 纯函数可以被纯函数和非纯函数调用
  • 非纯函数只能被非纯函数调用
  • : 非纯函数可以命令式编程

  • 有了这些语法糖和规范 - 仍然需要 Monads 吗?有什么 Monads 可以做上述规则集不允许的事情吗?

    B/c 我开始了解 Monads - 这正是他们的目的。正是那些非常聪明的人设法纯粹通过功能方法和手头的分类理论工具来实现这一目标。

    最佳答案

    不。
    原则上,单子(monad)与纯度或杂质无关。恰好IO可以很好地模拟不纯代码,但是 Monad类可以完美地用于 State 等实例或 Maybe ,它们是绝对纯净的。
    Monad 还允许以非常明确的方式表达复杂的上下文层次结构(我选择这样称呼它们)。 “纯/不纯”不是您可能想要进行的唯一划分。考虑authorized/unauthorized , 例如。可能的用途列表还在继续……我鼓励您查看其他常用实例,例如 ST , STM , RWS ,“受限IO”和 friend 们一起了解一下可能性。
    很快你就会开始制作你自己的 monad,为手头的问题量身定做。

    关于haskell - Monads 本质上不是 "conceptual"糖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925814/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com