[1,2.0] が有効な構造である int と float のリストを定義したいと考えています。
F# には、たとえば Number から派生した int と float を使用した型または型階層に AND がありますか?
ありがとう。
Number
いいえ、F# / .NET には、Python のような数値タワーも、 Java のような一般的な基本型もありません。
おそらく、目的のために判別共用体を次のように定義できます。
type Number =
| Float of float
| Int of int
let x = [Float(3.2); Int(2)] //val x : Number list = [Float 3.2; Int 2]
F# には、Lisp/Scheme のような数値の塔はありません。
サポートされている唯一の種類の共用体は、タグを含める必要がある非結合共用体です。あなたは書くことができます:
type Num = Int of int | Float of float
[Int 1; Float 2.0]
上記の値は typeNum list
です。要素を消費するには、パターン マッチングを使用します。
match num with
| Int x -> printf "%i" x
| Float x -> printf "%f" x