您认为可以使用免费的代理变压器吗?就像是
data FreePT f p a' a b' b m r = ....
instance (Proxy p,Functor f) => Proxy (FreePT f p) where
....
instance (Functor f) => ProxyTrans (FreePT f) where
....
这不仅是好奇心,我实际上会发现这很有用。
最佳答案
这不是一个答案,但它不会包含在评论中。
我也想要类似的功能。我怀疑内部类型将如下所示:
-- The same `FreeF` type from the `free` package in `Control.Monad.Trans.Free`
data FreeF f a x = Pure a | Free (f x)
newtype FreeP f p a' a b' b m r
= FreeP { unFreeP ::
p a'
(FreeF f a (FreeP f p a' a b' b m r))
b'
(FreeF f b (FreeP f p a' a b' b m r))
m
(FreeF f r (FreeP f p a' a b' b m r)) }
另外,使用当前现有的机器可能无法实现,但这没关系。例如,请查阅
StateP
代理转换器,该转换器依赖于thread_P
中的ProxyInternal
。实现thread_P
可能需要与FreeP
类似的类似物。关于haskell - 有免费的代理变压器吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16592395/