En Haskell, al definir un tipo de datos puede elegir derivar automáticamente algunas instancias, pero ¿puedo diferir la derivación automática, quizás incluso ponerla en otra biblioteca?Derivación de instancia automática después de la declaración
Aquí se muestra un ejemplo: se derivan
automática en Haskell es un verdadero ahorro de tiempo!
module MoneyModule where
data Money = Money Int
deriving Show
Ahora desea utilizar el MoneyModule
, pero también quiero una instancia Read
para Money
:
module ExternalModule where
instance Read Money where
read = error "Can't this be done automatically instead?"
Pero realmente hubieran preferido para que se deriva automáticamente, lo que sé GHC podía han hecho si solo el autor de MoneyModule hubiera derivado automáticamente la instancia Read
.
sé que:
- Es mejor para solucionar el problema en el actual
MoneyModule
remendándolo con la instancia que falta. - Que se considera malo tener instancias huérfanas. Las declaraciones de instancia se colocan preferiblemente en el módulo donde se definió la clase de tipo o el tipo de datos .
En mi caso no puedo seguir las mejores prácticas ya que la clase de tipo no está relacionada con el tipo de datos. Dudo que el módulo de clase de tipo ni el módulo de tipo de datos quiera mantener la instancia, por lo tanto, estoy creando una tercera biblioteca porque en algunas aplicaciones necesita la declaración de la instancia.