J'ai une question: Comment puis-je remplacer la méthode show pour String ou Char? Merci.Méthode de substitution de chaîne pour String/Char dans Haskell
Répondre
Si vous voulez faire cela, alors vous le faites mal. Pour une raison plus technique, veuillez consulter le my answer pour une question précédente.
Vous vraiment devraient utiliser soit vos propres fonctions a -> String
(peut-être via votre propre classe de type) ou utilisez une bibliothèque assez-impression pour les sorties plus détaillées (déjà dont certains ont une classe Pretty
intégré).
Puisque les gens semblent aimer mon commentaire, voici comme une réponse:
Si vous voulez ré-écrire les classes de type sur les types existants, vous pouvez les envelopper dans un newtype
de type -declared. Cela vous permet de définir vos propres implémentations, sans aucun surcoût au moment de l'exécution (car newtype
est isomorphe au type d'origine, il n'y a pas de boxe réelle au moment de l'exécution).
Cela pourrait ressembler à ceci:
newtype MyChar = MyChar Char
instance Show MyChar where
show (MyChar c) = "head \"" ++ c : "\""
Vous pouvez utiliser en enroulant Char
s avec MyChar
, comme ceci:
print $ fmap MyChar "test"
Cette imprimera
[head "t",head "e",head "s",head "t"]
Vous pouvez également définir showList, puis les listes de MyChar auront également un formatage personnalisé. En fait, c'est pourquoi les listes de caractères ([Char]) se comportent différemment des autres listes ([a]). – sdcvvc
- 1. haskell de substitution regex
- 2. Substitution de méthode C++
- 3. substitution de chaîne Ruby
- 4. substitution de chaîne vim
- 5. Méthode de substitution d'appel dans Dojo
- 6. Substitution de méthode privée Java
- 7. Méthode d'ajout de substitution dans stringBuilder?
- 8. Substitution de méthode/fonction dans Codeigniter
- 9. Substitution de la méthode paint() dans JButton
- 10. Python, substitution de chaîne contextuelle
- 11. Ruby - toute méthode pour faire une substitution de chaîne pour une définition?
- 12. Utilisation de la méthode de substitution pour résoudre les récurrences
- 13. Substitution d'une méthode prototype.js
- 14. chaîne formatage dans Haskell
- 15. Substitution de la méthode de peinture DataGridViewTextBoxCell
- 16. Substitution Java Méthode equals()
- 17. Substitution de la méthode d'envoi de XMLHttpRequest
- 18. Substitution d'une méthode javascript
- 19. comparer le contenu de chaîne dans haskell
- 20. longue chaîne de compositions dans Haskell
- 21. Méthode de substitution pour créer une sous-classe
- 22. Substitution de la méthode de contrôle native dans Renderer personnalisé
- 23. Substitution de la méthode HashSet Contient
- 24. Substitution de ParsePrimitive dans ServiceStack.Text
- 25. RESTeasy et substitution de méthode X-HTTP
- 26. Substitution d'une méthode dans la superclasse de superclasse dans Java?
- 27. Portage Perl substitution de chaîne à Ruby?
- 28. Haskell conversion de chaîne Io
- 29. Substitution dynamique d'une méthode abstraite dans C#
- 30. substitution de chaîne à l'aide regex
Y at-il une raison pour laquelle vous ne voulez pas simplement définir d'autres fonctions de type 'Char -> String' ou' String -> String'? Pourquoi voulez-vous remplacer «show»? – hammar
Je pense que vous devez l'emballer dans un [nouveau type] (http://www.haskell.org/haskellwiki/Newtype) et définir Show pour ce type. –