gpt4 book ai didi

haskell - 为什么 `MonadTransControl` 没有 `ContT` 实例

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

我不知道如何实现它,我假设可能没有办法做到这一点。是否有证据或令人信服的论据表明它无法完成?

是什么让 ContT特别的?

最佳答案

一般来说,您唯一可以摆脱 ContT r m是类型 m r 的值. Run (ContT r)的类型签名将是

Run (ContT r) = forall n b. Monad n => ContT r n b -> n (StT (ContT r) b)

这相当于
forall n b. ((b -> n r) -> n r) -> n (StT (ContT r) b)
StT (ContT r) b 唯一可能的类型是 r ,但即便如此,也不可能定义类型为 b -> n r 的函数传递给 ContT .从 liftWith给定一个函数,该函数需要类型为 Run (ContT r) 的值,无法实现。
restoreT更糟糕的是,因为任何可以从一般 ContT r m a 中提取的值不能变回 ContT r m a .所以你失去了来来去去。

顺便说一句,这也是你做不出来的原因 ContT MonadFix .你不能随意转动 a变成任意 r ,反之亦然。

关于haskell - 为什么 `MonadTransControl` 没有 `ContT` 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40727067/

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