Voici mon type de données:Haskell, type de données paramétrées Conversion en chaîne de
data Foo a = Value Integer
|Boo a
et j'ai une fonction pour convertir le Foo datatype en chaîne:
showFoo::Show a=> Foo a -> String
showFoo (Value n) = show n
showFoo (Boo a) = show a
Par exemple: showFoo (Value 10) devient: "10", mais pour showFoo (Boo "S"), il devient: "\" S \ "" mais je n'ai besoin que de "S".
Je comprends votre point, mais je ne peux pas changer la signature de la fonction (putStrLn ne peut pas être utilisé). – Sam
Je sympathise avec vous, mais je ne peux pas (ou je ne suis pas motivé) aider quand il y a des contraintes artificielles. Je suppose que vous pourriez faire quelque chose comme 'filter (/ = '' ') (show a)' (ou simplement abandonner conditionnellement '" 's'ils sont le premier et le dernier caractère). –
Je suis à peu près sûr que le problème fondamental est que l'OP veut que 'show" foo "' aboutisse à "foo" '. Je ne pense pas ne pas vouloir mettre une fonction 'Foo a -> String' dans la monade IO et toujours écrire à la console est une" contrainte artificielle "sur la solution. – Ben