gpt4 book ai didi

haskell - 具有身份单子(monad)的单子(monad)转换器

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

使用带有 Identity monad 的 Monad 转换器而不是仅仅使用“标准”版本的转换器有什么意义?

是不是更灵活?

最佳答案

返回 mtl 1.0 我们两者都有

newtype State s a = State { runState :: s -> (a, s) }


newtype StateT s m a = StateT { runStateT :: s -> m (a, s) }

然而,这意味着任何人都必须为 MonadState 之类的东西实现实例。结束了重复的努力。

transformers (以及现已失效的 monads-fdmonads-tf )Ross Paterson 决定使用更简单的方法,只提供后者并使用 Identity作为基础单子(monad)。

这减少了维护 mtl 的实现工作。并消除了实现 State 有两种不同方法的事实。单子(monad)。然而,它确实制作了 mtl 的内部结构。更难教,因为你需要了解 transformers刚出门的版本,不要将简化版本作为训练轮。

当老 mtl已退休, monads-fd变成了 mtl 2.0,使用现有的 transformers这一设计决定得以延续。

我个人喜欢至少将单独的简单单子(monad)用于教学目的,但在辩论的另一边有更多的人。

关于haskell - 具有身份单子(monad)的单子(monad)转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15946633/

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