F#型打印机:打印机的标准和质量示例

时间:2012-12-15 19:47:58

标签: printing f# printf standards

作为F# fsi.AddPrinter: Does AddPrinter have ability to take list apart?

的后续内容

我不知道类型打印机应该提供处理列表作为输入。

因此,是否有任何已发布的标准,说明打印机应该/应该要什么?

您能否提供此类代码示例的参考。

1 个答案:

答案 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属性,以便为fscfsi提供良好的打印机,这些打印机可与printf "%A"一起使用,printf "%O"等。