0

F# fsi.AddPrinterの続きとして: AddPrinter にはリストを分解する機能がありますか?

タイププリンターがリストを入力として処理できるようにする必要があることを知りませんでした。

そのため、活字プリンターに何が必要であるか、または必要とされるべきかについて、公開された標準はありますか?

そのようなコードの例への参照を提供してください。

4

1 に答える 1

3

タイププリンターがリストを入力として処理できるようにする必要があることを知りませんでした。

そうしないことをお勧めします。これを行うと、KISS の原則が破られ、非常に標準的な'T list. プリンターを提供するだけで'T、あとは F# Interactive に任せてください。

あなたはこのケースを考えるかもしれません

type Theorem = Axiom list

気にTheoremなるところ、適切な方法で表示したいところ。Theorem次に、 a が次のように出力されるようにプリンターを定義するのが理にかなっています。

:- axiom 1, axiom 2, ..., axiom n.

この例はあまり良い例ではありません。なぜなら、あなたはおそらくタイプ セーフなソリューションを好むからです。

type Theorem = Theorem of Axiom list

fsi.AddPrinterそうは言っても、あなたはまったく行くべきかどうか尋ねるかもしれません. fsi.AddPrinter従来の理由により、ビットが存在する可能性があります。より普遍的な解決策は、ToString()メソッドをオーバーライドし、 StructuredFormatDisplay属性を使用して、、 などで動作する とfscの両方で適切なプリンターを使用することです。fsiprintf "%A"printf "%O"

于 2012-12-15T20:27:28.263 に答える