2013-05-16 3 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)) } 

ही, वर्तमान में मौजूदा मशीनरी के साथ संभव नहीं हो सकता है, लेकिन यह ठीक है। उदाहरण के लिए, StateP प्रॉक्सी ट्रांसफ़ॉर्मर से परामर्श लें, जो पर ProxyInternal से संबंधित है। पर एक समान एनालॉग FreeP लागू करने के लिए आवश्यक हो सकता है।

संबंधित मुद्दे