2016-07-12 1 views
8

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

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.