作为F# fsi.AddPrinter: Does AddPrinter have ability to take list apart?
的后续内容我不知道类型打印机应该提供处理列表作为输入。
因此,是否有任何已发布的标准,说明打印机应该/应该要什么?
您能否提供此类代码示例的参考。
答案 0 :(得分:3)
我不知道类型打印机应该提供处理列表作为输入。
我建议你不要这样做。如果你这样做,你就会违反KISS原则,并可能以一种奇怪的方式显示非常标准的'T list
,从而让其他团队成员感到惊讶。只需为'T
提供一台打印机,让F#Interactive找出其余部分。
你可以考虑这个案例
type Theorem = Axiom list
您关心Theorem
的地方,并希望以适当的方式显示它。然后定义打印机以便将Theorem
打印为
:- axiom 1, axiom 2, ..., axiom n.
这个例子不是一个很好的例子,因为你可能更喜欢类型安全的解决方案
type Theorem = Theorem of Axiom list
那就是说,你可能会问你是否应该去fsi.AddPrinter
。由于遗留原因,fsi.AddPrinter
位可能在那里。更通用的解决方案是覆盖ToString()
方法并使用StructuredFormatDisplay属性,以便为fsc
和fsi
提供良好的打印机,这些打印机可与printf "%A"
一起使用,printf "%O"
等。