que tienen este tipo de definición:Haskell: Derivado Mostrar de los tipos personalizados
data Operace = Op (Int->Int->Int) String (Int->Int->Int) deriving Show
Quiero imprimir este tipo en el intérprete de comandos interactivo (GHCi). Todo lo que se debe imprimir es el campo String
.
yo probamos este:
instance Show Operace where
show (Op op str inv) = show str
Pero puedo seguir obteniendo
No instance for (Show (Int -> Int -> Int))
arising from the 'deriving' clause of a data type declaration
Possible fix:
add an instance declaration for (Show (Int -> Int -> Int))
or use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (Show Operace)
no quiero añadir Show
para (Int->Int->Int)
, todo lo que quiero imprimir es la cadena.
¡Gracias por la ayuda!
EDIT:
Para referencia futura, la versión fija es:
data Operace = Op (Int->Int->Int) String (Int->Int->Int)
instance Show Operace where
show (Op op str inv) = str
Sí, eso fue todo, gracias. Esperé que funcionara como en los lenguajes tipo C, donde declaras la lista de tipos principales en la definición de la clase. –
@mzabsky: Este es un mecanismo poderoso, ya que puede definir instancias de clases de tipos adicionales para un tipo existente sin tocar su definición. – hammar