मैं हाल ही में एक ऐसी स्थिति में आया जहां मैं एक उदाहरण घोषणा में टाइप कन्स्ट्रक्टर लिखने में सक्षम होना चाहता था। मैं यह करने के पसंद आया होगा:रचनात्मक प्रकार जैसे रचनाकार
instance (SomeClass t, SomeClass t') => SomeClass (t . t') where
(t . t')
के साथ इस तरह (t . t') a = t (t' a)
(ताकि t
और t'
तरह * -> *
है कि परिभाषित हम आंशिक रूप से लागू कर सकते हैं प्रकार कंस्ट्रक्टर्स, कार्यों की तरह, तो क्या कारण है कि हम उन्हें रचना नहीं कर सकता है।? इसके अलावा, वहाँ शायद मैं क्या हासिल करने की कोशिश कर रहा था के लिए एक समाधान नहीं है शायद समानता बाधाओं के साथ
(मैं पता चलेगा कि Control.Compose मौजूद है, लेकिन यह केवल एक newtype
आवरण बनाता है - मैं एक प्रकार पर्याय चाहते हैं)?।
सच है, हालांकि '-XLiberalTypeSynonyms' आंशिक रूप से लागू प्रकार समानार्थी शब्दों को कुछ परिस्थितियों में अनुमति देता है। हालांकि, इस मामले में नहीं। – leftaroundabout
महान जवाब! 'टाइप-लेवल लैम्बडास' वास्तव में अंतर्ज्ञान का प्रकार था जिसे मैं ढूंढ रहा था। – Alec
प्रकार का स्तर टाइप स्तर लैम्बडा के साथ अपरिहार्य है। – augustss