Scrap your type classes numaralı makaleyi okuduktan sonra, gösterilen fikirlerin bazılarını yeniden uyguladık. Bunu yaparken gerçekten garip bir şeyle karşılaştım: Tip Sınıfı - Tip, tip kısıtlaması olarak kullanılabilir! Benim sorum: Neden bu?Tip Sınıfı Veri Türleri
Benim Kod:
{-# 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 yılında şu şey olur:
>>> :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)
Bu sadece bir hatadır. – augustss
@augustss Rapor edildi mi? Öyleyse nerede? – rightfold
Hangi ghc versiyonunuz var? – augustss