我已经阅读了大量的Expert F#,并且正在构建一个实际的应用程序。在调试时,我已经习惯于传递这样的 fsi 命令以使 repl 窗口中的内容清晰易读:
fsi.AddPrinter(fun (x : myType) -> myType.ToString())
我想扩展它以使用 printf 格式化程序,所以我可以输入例如
printf "%A" instanceOfMyType
并控制自定义类型的输出。这本书暗示可以做到这一点(第 93 页,“通用结构格式可以扩展为使用任何用户定义的数据类型,F# 网站上涵盖的主题”),但我没有找到任何关于如何真正做到这一点。有谁知道怎么做?甚至可能吗?
编辑:
我应该包含一个代码示例,它是我正在处理的记录类型,例如
type myType =
{a: int}
override m.ToString() = "hello"
let t = {a=5}
printfn "%A" t
printfn "%A" (box t)
两个打印语句都产生:
{a = 5;}