आलेख Scrap your type classes पढ़ने के बाद, मैंने दिखाए गए कुछ विचारों को दोबारा लागू किया। ऐसा करने के दौरान मैं वास्तव में कुछ अजीब आया: प्रकार वर्ग - प्रकार को एक प्रकार की बाधा के रूप में उपयोग किया जा सकता है! मेरा सवाल: वह क्यों है?कक्षा डेटा प्रकार टाइप करें
मेरे कोड:
{-# LANGUAGE Rank2Types #-}
data IFunctor f = IFunctor {
_fmap :: forall a b. (a -> b) -> f a -> f b
}
-- this type checks...
_fmap2 :: IFunctor f => (a -> b) -> f (f a) -> f (f b)
_fmap2 = \inst -> _fmap inst . _fmap inst
GHCi में निम्नलिखित बात होता है:
>>> :t _fmap2 :: IFunctor f => (a -> b) -> f (f a) -> f (f b)
_fmap2 :: IFunctor f => (a -> b) -> f (f a) -> f (f b)
:: IFunctor f -> (a -> b) -> f (f a) -> f (f b)
यह सिर्फ एक बग है। – augustss
@augustss क्या इसकी सूचना मिली है? यदि हां, तो कहाँ? – rightfold
आपके पास कौन सा ghc संस्करण है? – augustss