gpt4 book ai didi

haskell - “ExceptT ResourceT”与 'ResourceT ExceptT'

转载 作者:行者123 更新时间:2023-12-02 17:49:36 25 4
gpt4 key购买 nike

现实世界 Haskell 指出 "Transformer stacking order is important" 。但是,我似乎无法弄清楚 ExceptT (ResourceT m) aResourceT (ExceptT m) a 之间是否有区别。他们会互相干扰吗?

最佳答案

在此示例中,两个订单之间没有真正的区别。原因是:与包括 ExceptT 在内的许多转换器不同,资源转换器不会将自己的行为“注入(inject)”到您应用它的基础 monad 中,而是从整个传递发布引用的操作。

如果您写出类型(为了简单起见,我将引用 MaybeT 而不是 ExceptT;对于这个问题来说,它们显然是等效的)那么你基本上就有了

type MaybeResourceT m a = MaybeT (IORef RelMap -> m a)
= IORef RelMap -> m (Maybe a)
type ResourceMaybeT m a = ResourceT (m (Maybe a))
= IORef RelMap -> m (Maybe a)

即实际上是等价的类型。我想您也可以为操作展示这一点。

关于haskell - “ExceptT ResourceT”与 'ResourceT ExceptT',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34403139/

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