在ghci中打印漂亮

lan*_*key 9 haskell pretty-print show ghci

有没有办法让ghci使用自定义漂亮打印功能而不是显示某些类型?一个更一般的问题:在交互模式下使库尽可能可用的一般准则是什么?谢谢.

Tik*_*vis 9

您可以使用该--interactive-print标志指定自定义漂亮打印功能,并使用C a => a -> IO ()任何约束的类型命名范围内的任何函数C.(有关详细信息,请参阅文档的第2.4.9节.)

ghci --interactive-print=MyModule.prettyPrint
Run Code Online (Sandbox Code Playgroud)

这意味着您可以从自己的类型类中指定自己的函数.对于特定类型,没有办法做到这一点,但是您的自定义类总是可以包含一个回退实例

instance Show a => PrettyPrint a where prettyPrint = show
Run Code Online (Sandbox Code Playgroud)

这至少OverlappingInstances需要工作.