Bu yükleri: ilehatasız
data Const c a = Const c
instance Functor (Const c) where
fmap _ (Const v) = Const v
... ama bu
data Const' c a = Const' c
instance Functor (Const' c) where
fmap _ cv = cv
... başarısız hata. Derleyici neden cv
türünün Const' c
türüne dönüştürebiliyor? Beyanın geri kalanı ve fmap
'un tanımı göz önüne alındığında başka ne olabilir?
Neyse ki, 'Const' kurucusunu çıkarmak ve onu geri koymak ücretsizdir, çünkü Const 'yeni bir türdür. Durum, "Her ikisi" için çok üzücüdür; burada, temsil aynı kalsa bile, türü değiştirmek için belleğin ayrılması gerekebilir. – dfeuer