haskell - how to write a derivable class? -
i have this
data = integer deriving (myclass, show) class myclass hello :: myclass => -> instance myclass integer hello = + 1 main = print . hello $ 3
but myclass isn't derivable. why?
ghc cannot magically derive instances arbitrary info types. however, can create utilize of fact newtype
declarations create new name same underlying type derive instances using generalizednewtypederiving
extension. so, this:
{-# language generalizednewtypederiving #-} newtype = integer deriving (myclass, show) class myclass hello :: myclass => -> instance myclass integer hello = + 1 main = print . hello $ 3
the reason ghc cannot derive new instance not know instance should be. if info type has 1 field, may not same field. ability derive instances newtype
s convenient, since used provide different behaviours typeclasses or way utilize type scheme separate things have same type different uses in code.
haskell
No comments:
Post a Comment