In Haskell, when defining a data type you can choose to automatically derive some instances, but can I defer the automatic deriving, perhaps even put it in another library?
Here is an example:
Automatic deriving in Haskell is a real time saver!
module MoneyModule where
data Money = Money Int
deriving Show
Now I wish to use the MoneyModule
, but I also want a Read
instance for Money
:
module ExternalModule where
instance Read Money where
read = error "Can't this be done automatically instead?"
But I would really have preferred for it to be derived automatically, which I know ghc could have done if only the MoneyModule author had auto-derived the Read
instance.
I know that:
MoneyModule
by patching it with the missing instance.In my case I can't follow best practices since the type class is unrelated to the data type. I doubt that the type class module nor the data type module wants to hold the instance, so therefore I'm creating a third library because in some applications you need the instance declaration.
GHC has the StandaloneDeriving
extension, with that, you can
{-# LANGUAGE StandaloneDeriving #-}
import MoneyModule
deriving instance Read Money
derive instances for many classes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With