unit型
Midoliy |> F#プログラミング


unit型とは
なぜ必要か?

unit型とは


 unit型とは .NET にはない、F#独自の組み込み型です。unit型は、他の値が存在しないことを表現するための単一の値のみをとることができます。
 構文は以下のようになっています。
// ------------------
// [ 構文 ]
// ------------------

()  // unit型 を唯一あらわせる値


なぜ必要か?


 すべてのF#の式は、値に評価される必要があります。意味のある値を生成しない式の場合に、この unit型 が使用されます。
 また、unit型は C# や C++ の void型 に似ています。void型との大きな違いは, 単一の値= () を持っている ということです。

 意味のある値を生成しない式とは具体的にはどのようなものでしょうか?実は「プリミティブ型」などの記事ですでに使っている関数の中で、unit型を利用しているものが存在します。

 それは、printfn関数 です。
 printfn関数は、標準出力に値を出力するための関数です。そのため、返り値などは必要ありません。そういった関数を作成するときにこのunit型が便利に働きます。

 また、意図的に関数などの返り値を無視したい場合が存在します。たとえば、do束縛や最上位モジュールなどでコードの評価を unit型 にしなければならないときです。
 こういった場合に対応するために、F#には標準で "ignore" という関数が用意されています。