型の概要
F#にはさまざまな "型" が存在しています。.NETで共通する組み込み型(= プリミティブ型)の他に、F#固有の型が多数存在しています。
これは、OCamlとの互換性の維持のためであったり、関数型言語として当然なければならない機能を実現するために、.NETとは関係のない独自の型を採用しています。
F#以外の.NET言語の経験がある方はプリミティブ型を改めて理解する必要はありませんが、F#固有の型については使い方や特性を新たに理解しなければなりません。
以下はF#がもつ基本的な型の概要一覧です。
| F#の型 | 構文 | 例 | 
|---|---|---|
| プリミティブ型 | 型名 | int float string | 
| 集計型 (class/struct/union/record/enumなど) | 型名 | System.DateTime Color | 
| 型略称 | 型略称名 | bigint | 
| 完全修飾型 | namespace.型名 または module.型名 または namespace.module.型名 | System.IO.StreamWriter | 
| 配列 (array) | 型名[] または array<型名> または 型名 array | int[] array<float> string array | 
| 2次元配列 | 型名[,] | int[,] folat[,] | 
| 3次元配列 | 型名[,,] | string[,,] | 
| タプル型 (tuple) | 型名1 * 型名2 | int * char * int | 
| ジェネリック型 | 型パラメータ ジェネリック型名 または ジェネリック型名<型パラメータリスト> | 'a list list<'a> Dictionary<'key, 'value> | 
| 構築型 (特定の型引数を持つジェネック型) | 型引数 ジェネリック型名 または ジェネリック型名<型引数リスト> | int option list<string> ref<int> Dictionary<int, string> | 
| 1つの引数をもつ関数型 | 引数の型 -> 戻り値の型 | int -> string int型を受けとって, string型を返す関数 | 
| 複数の引数をもつ関数型 | 引数の型1 -> 引数の型2 -> ... -> 戻り値の型 | int -> float -> string int型とfloat型を受けとって, string型を返す関数 | 
| 引数としての高階関数 | (関数型) | ('a -> 'b) -> 'a list -> 'b list | 
| デリゲート (delegate) | delegate of 関数型 | delegate of unit -> int | 
| フレキシブル型 (flexible) | #型名 | #System.Windows.Forms.Control #seq<int> | 
組み込み型の一覧表
次の表はF#の基本的な型のキーワード一覧となっています。これは System 名前空間で定義済みの型の別名(= エイリアス)となっています。
また、unit型だけは、F#独自の組み込み型となっています。
| F#の型 | .NET型 | 値範囲 | 
|---|---|---|
| bool | System.Boolean | true / false | 
| byte | System.Byte | 0 ~ 255 | 
| sbyte | System.SByte | -128 ~ 127 | 
| int16 | System.Int16 | -32,768 ~ 32,767 | 
| uint16 | System.UInt16 | 0 ~ 65,535 | 
| int | System.Int32 | -2,147,483,648 ~ 2,147,483,647 | 
| uint32 | System.UInt32 | 0 ~ 4,294,967,295 | 
| int64 | System.Int64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 
| uint64 | System.UInt64 | 0 ~ 18,446,744,073,709,551,615 | 
| float32 / single | System.Single | ±1.5x10−45 ~ ±3.4x1038 | 
| float / double | System.Double | ±5.0×10−324 ~ ±1.7×10308 | 
| decimal | System.Decimal | ±1.0x10-28 ~ ±7.9228x1028 | 
| char | System.Char | Unicode文字= U+0000 ~ U+FFFF | 
| string | System.String | Unicode文字列 | 
| object | System.Object | すべての型の親 | 
| void | System.Void | ないことを示す型、または値 | 
| unit | 該当なし | 実際の値がないことを示します。unit型は () を唯一の値として持ちます。 | 
| nativeint | System.IntPtr | 符号付き整数値としてのネイティブポインタ | 
| unativeint | System.UIntPtr | 符号なし整数値としてのネイティブポインタ |