J'ai cette définition de ce type:
data Operace = Op (Int->Int->Int) String (Int->Int->Int) deriving Show
Je veux imprimer ce type dans la coque interactive (GHCI). Tout ce qui devrait être imprimé est le champ String
.
J'ai essayé ceci:
instance Show Operace where
show (Op op str inv) = show str
Mais je continue toujours à obtenir
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)
Je ne veux pas ajouter Show
pour (Int->Int->Int)
, tout ce que je veux imprimer est la chaîne.
Merci pour l'aide!
Edit :
Pour une référence future, la version fixe est la suivante:
data Operace = Op (Int->Int->Int) String (Int->Int->Int)
instance Show Operace where
show (Op _ str _) = str
La déclaration d'instance que vous avez faite est la bonne façon d'aller. Il semble que vous ayez oublié de supprimer cette clause erronée deriving
de la déclaration d'origine data
.
data Operace = Op (Int->Int->Int) String (Int->Int->Int)
instance Show Operace where
show (Op op str inv) = show str
Vous pouvez dériver Show
, juste importer Text.Show.Functions
premier.