2013-05-16 25 views

cevap

2

Bu bir yanıt değil, ancak bir yorumun içine sığmaz.

Aynı işlevsellik de istedim. Ayrıca

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

, şu anda var olan makinelerle mümkün olmayabilir, ama önemli değil: Ben iç türü bu gibi görünecektir şüpheli. Örneğin, proxy trafosuna danışın,ProxyInternal'dan itibaren. 'a benzer bir analog, FreeP'u uygulamak için gerekli olabilir.