gpt4 book ai didi

haskell - State 和其他 MTL monad 的应用实例?

转载 作者:行者123 更新时间:2023-12-03 22:12:46 26 4
gpt4 key购买 nike

查看 Control.Applicative 的文档,我注意到它们有某些 monad 的实例声明(例如 IOMaybe 和特别是 ST ),但是没有 MTL monad 的实例,例如 StateRWS .相反,它看起来像有一个通用的 WrappedMonad 类型定义,我猜这是涵盖所有其他情况。

所以这是我的问题:

  • 为什么没有Applicative MTL 单子(monad)的实例?到目前为止,我自己能找到的最佳答案是 three year old post ,其中有人实现了这些实例并被立即忽略。
  • WrappedMonad 有什么关系? ?我找到了 post on Reddit这简要解释了它,但我想我对如何使用它感到困惑。

  • 最终我希望能够使用 State采用应用风格(如 recommended to me ),但如果我不得不用 WrappedMonad 乱扔代码数据构造函数,那么它似乎不是一个胜利。我也可以忽略 WrappedMonad完全,并定义 Applicative以与 IO 相同的方式实例化我自己, ST依此类推:就 return 而言和 ap ......但这似乎也很愚蠢。

    最佳答案

    该文档仅根据 base 的内容生成。包,其中不包含 State - 所以它不包含Applicative它的实例。如果您查看 the MTL documentation ,您将看到 Applicative列出的实例。

    或者,您可以打开 GHCi,导入 Control.Monad.State 和 Control.Applicative,然后使用 :i Applicative列出 Applicative 的实例或 :i StateT列出 StateT 的类有实例(StateStateT 的类型别名,其中一个参数是固定的)。两者都将表明确实存在这种情况。

    关于haskell - State 和其他 MTL monad 的应用实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989017/

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