2016-07-12 4 views
8

Existe-t-il un moyen de faire en sorte que ghci utilise une fonction d'impression personnalisée plutôt que d'afficher pour certains types? Une question plus générale: quelles sont les lignes directrices générales pour rendre une bibliothèque aussi utilisable que possible en mode interactif? Merci.Pretty-printing in ghci

Répondre

7

Vous pouvez spécifier une fonction d'impression personnalisée à l'aide de l'indicateur --interactive-print et nommer toute fonction dans l'étendue avec le type C a => a -> IO() pour toute contrainte C. (Voir Section 2.4.9 de la documentation pour plus de détails.)

ghci --interactive-print=MyModule.prettyPrint 

Cela signifie que vous pouvez spécifier votre propre fonction de votre propre classe de types. Il n'y a aucun moyen de le faire juste pour un type spécifique, mais votre classe personnalisée peut toujours inclure une instance comme fallback

instance Show a => PrettyPrint a where prettyPrint = show 

Cela nécessitera au moins OverlappingInstances au travail.