Haskellの「導出ショー」F#で?
-
21-09-2019 - |
質問
でHaskellのは、それが代数のタイプを作るのは簡単です/単純型定義にderiving Show
を追加することによって、文字列として「表示」組合を判別します。
でF#私の終わりのようなものを書いてアップします:
type Pos =
| Pos of int * int
override this.ToString() =
match this with
Pos(startp, endp) -> sprintf "Pos(%d, %d)" startp endp
と明らかにそれは、より複雑なタイプで非常に悪くなる。
F#でderiving Show
のようなものを取得する方法?
解決
などprintf
としてのF#の印刷機能を使用すると、%A
書式指定子を(あなたがToString
を指定した場合、彼らは%O
を使用)を使用する場合、合理的に任意のデータ型をフォーマットすることができます。あなたがフォーマットされた文字列を返すToString
を使用してsprintf
を実装することができます:
type Pos =
| Pos of int * int
override x.ToString() = sprintf "%A" x
この例のための版画 "POS(1、2)" と、それはF#の型(リスト、労働組合、レコード、タプル)のほとんどのために動作します。それはより少し長くちょうどderiving Show
を追加することなく、少なくとも、あなたは自分自身を印刷します。
所属していません StackOverflow