मुझे पता है कि TypeSynomymInstances only allows fully applied type synonyms to be used in instance heads, लेकिन ऐसा लगता है कि यह आसान होगा अगर मैं उपयोग करने के लिए समान रूप से लागू प्रकार समानार्थी शब्द का उपयोग कर सकता हूं।टाइपसिंहम इंस्टेंस क्यों नहीं आंशिक रूप से लागू प्रकार समानार्थी उदाहरण उदाहरणों में उपयोग किए जाने की अनुमति देते हैं?
उदाहरण के लिए:
class Example e where
thingy :: a -> b -> e a b
-- legit, but awkward
newtype FuncWrapper e a b = FuncWrapper { ap :: a -> e a b }
instance (Example e) => Example (FuncWrapper e) where
thingy _ = FuncWrapper . flip thingy
funcWrapperUse :: (Example e) => e Int String
funcWrapperUse = thingy 1 "two" `ap` 3 `ap` 4 `ap` 5
-- not legal, but a little easier to use
type FuncSynonym e a b = a -> e a b
instance (Example e) => Example (FuncSynonym e) where
thingy _ = flip thingy
funcSynonymUse :: (Example e) => e Int String
funcSynonymUse = thingy 1 "two" 3 4 5
क्या आपने अपना दूसरा संस्करण चलाने के लिए '-XTypeSynonymInstances' को आजमाया है (जैसा कि जीएचसी द्वारा सुझाया गया है)? – Landei
@ लैंडेल: यह इस तथ्य को पसंद नहीं करता कि 'FuncSynonym e' पूरी तरह से लागू नहीं है। इस प्रकार मेरा सवाल। – rampion
यह टिकट (785] (http://ghc.haskell.org/trac/ghc/ticket/785) है, जिसे 'वोंटफ़िक्स' के रूप में चिह्नित किया गया है। –