Identity
için monad trafo türünü tanımlarsam, Show
örneğini türetebilir.Neden Show örneği, BelkiT için türetilemiyor?
newtype IdentityT f a =
IdentityT { runIdentityT :: f a }
deriving (Show)
instance Show (f a) => Show (IdentityT f a)
elde edecek Ama Maybe
newtype MaybeT m a =
MaybeT { runMaybeT :: m (Maybe a) }
deriving (Show)
için monad trafo türünü tanımlamak eğer
• No instance for (Show (m (Maybe a)))
arising from the first field of ‘MaybeT’ (type ‘m (Maybe a)’)
yana hatayı olsun 0 Show
örneği vardır, işe ve türetmek beklenir
instance Show (m (Maybe a)) => Show (MaybeT m a)
Neden olamaz?
Ancak ikinci önerisi, "UndecidableInstances" işlevini etkinleştirmek için gayet iyi. – dfeuer
Bu yüzden benim için örneği türetmek için derleyiciyi almak için 'UndecidableInstances' kullanabilirim, ancak' MaybeT' türü 'IdentityT' türünü ele alabildiği halde türetmeden bunu türetemez hale getirir? Ör. Ben herhangi bir uzantı olmadan BelkiT [Sadece 1] 'göstermek mümkün olacağını umuyordum – robertjlooby