phi*_*chu 7 haskell monad-transformers free-monad
你认为可以使用免费代理变压器吗?就像是
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
....
Run Code Online (Sandbox Code Playgroud)
这不仅仅是好奇心我实际上会觉得这很有用.
这不是答案,但不适合评论。
我也想要类似的功能。我怀疑内部类型将如下所示:
-- 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)) }
Run Code Online (Sandbox Code Playgroud)
此外,目前现有的机器可能无法实现这一点,但这没关系。例如,查阅StateP代理变压器,它依赖于thread_Pfrom ProxyInternal。thread_P实施时可能需要类似的模拟FreeP。
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |