是否有一种方法可以让ghci在特定类型上使用自定义的漂亮打印函数,而不是show函数?更一般的问题是:如何使库在交互模式下尽可能易用?谢谢。
是否有一种方法可以让ghci在特定类型上使用自定义的漂亮打印函数,而不是show函数?更一般的问题是:如何使库在交互模式下尽可能易用?谢谢。
您可以使用--interactive-print
标志并为作用域中具有类型C a => a -> IO ()
的任何约束C
命名的函数指定自定义漂亮打印函数。(有关详细信息,请参见文档的第2.4.9节。)
ghci --interactive-print=MyModule.prettyPrint
这意味着您可以从自己的类型类中指定自己的函数。没有办法仅针对特定类型执行此操作,但是您的自定义类始终可以包括一个回退实例,例如:instance Show a => PrettyPrint a where prettyPrint = show
这将需要至少OverlappingInstances
才能运行。