在 ghci 中漂亮地打印

Pretty-printing in ghci

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

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

ghci --interactive-print=MyModule.prettyPrint

这意味着您可以从您自己的类型中指定您自己的函数class。没有办法只针对特定类型执行此操作,但您的自定义 class 始终可以包含后备实例,例如

instance Show a => PrettyPrint a where prettyPrint = show

这至少需要 OverlappingInstances 才能工作。