जीएचसी में कुछ भाषा झंडे हैं, जैसे कि DeriveFunctor
, DeriveDataTypeable
इत्यादि, जो हास्केल 98 में अनुमत लोगों के अलावा अन्य प्रकार के वर्गों के लिए व्युत्पन्न उदाहरणों की कंपाइलर पीढ़ी को सक्षम बनाता है। यह विशेष रूप से Functor
जैसे कुछ के लिए समझ में आता है, जहां उस वर्ग के नियम एक स्पष्ट, "प्राकृतिक" व्युत्पन्न उदाहरण निर्देशित करें।जीएचसी मोनॉयड के लिए उदाहरण क्यों नहीं प्राप्त कर सकता है?
तो Monoid
के लिए क्यों नहीं? (स्यूडोकोड बहाना)
data T = MkT a b c ...
एक यंत्रवत् एक Monoid
उदाहरण उत्पादन कर सकता है:: यह एक एकल डेटा निर्माता के साथ किसी भी डेटा प्रकार के लिए की तरह लगता है
instance (Monoid a, Monoid b, Monoid c, ...) => Monoid T where
mempty =
MkT mempty mempty mempty ...
mappend (MkT a1 b1 c1 ...) (MkT a2 b2 c2 ...) =
MkT (mappend a1 a2) (mappend b1 b2) (mappend c1 c2) ...
मुझे पता कर रहा हूँ कि derive पैकेज provides this, लेकिन मेरा सवाल विशेष रूप से यह है कि क्या कोई कारण है कि जीएचसी क्यों नहीं करता है।
@sdcvvc: यह प्रश्न के वैध उत्तर की तरह लगता है। शायद आपको इसे इस तरह पोस्ट करना चाहिए? –
ठीक है, मैंने जवाब दिया है। – sdcvvc
'फ़ैक्टर' उदाहरण बनाने के लिए आमतौर पर केवल समझदार तरीका होता है। 'मोनॉयड 'के बारे में भी यही सच नहीं है। – augustss