【问题标题】:Is there a free proxy transformer?有免费的代理变压器吗?
【发布时间】:2013-05-16 16:05:54
【问题描述】:

您认为免费的代理转换器可行吗?类似的东西

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
    ....

这不仅仅是好奇心,我实际上会觉得这很有用。

【问题讨论】:

    标签: haskell monad-transformers free-monad


    【解决方案1】:

    这不是答案,但不适合评论。

    我也想要一个类似的功能。我怀疑内部类型会是这样的:

    -- 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 代理转换器,它依赖于来自ProxyInternalthread_P。实现FreeP 可能需要类似于thread_P

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      相关资源
      最近更新 更多