2013-05-16 7 views
7

無料のプロキシトランスが可能ですか?何かのように無料のプロキシ変換器はありますか?

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

これは私が実際にこの便利なことを見つけるだろうだけでなく、好奇心です。

答えて

2

これは答えではありませんが、コメント内に収まりません。

同様の機能も欲しかったです。内部のタイプは次のようになります:

-- 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)) } 

また、現在の機械では不可能かもしれませんが、大丈夫です。たとえば、thread_PProxyInternalに依存するStatePプロキシトランスフォーマーを参照してください。 FreePを実装するには、thread_Pと同様のアナログが必要な場合があります。