C'è un modo per fare in modo che ghci usi una funzione di stampa carina personalizzata invece di mostrare per determinati tipi? Una domanda più generale: quali sono le linee guida generali per rendere una libreria il più possibile utilizzabile in modalità interattiva? Grazie.Pretty-printing in ghci
8
A
risposta
7
È possibile specificare una funzione di stampa carina personalizzata utilizzando il flag --interactive-print
e denominando qualsiasi funzione nell'ambito con il tipo C a => a -> IO()
per qualsiasi vincolo C
. (Vedere Section 2.4.9 dei documenti per i dettagli.)
ghci --interactive-print=MyModule.prettyPrint
Ciò significa che è possibile specificare la propria funzione dal proprio typeclass. Non c'è modo per fare questo solo per un tipo specifico, ma la classe personalizzata può sempre includere un esempio di ripiego come
instance Show a => PrettyPrint a where prettyPrint = show
Ciò richiederà almeno OverlappingInstances
al lavoro.