値(value)と型(type)
MSDNによると
F#の値(value)は、特定の型(type)を持つ数量(quantity)ですと記述があります。
型とはデータの種類のことです。
777や4649などは、int型(ある範囲の整数を表す)の値であり
"777"や"hello"や"こんにちは!"などは、string型(文字列を表す)の値になります。
型があることによって
型にまつわるエラーをコンパイラが事前にチェック出来るという
メリットがあります。
例えば、文字列と数値を足しあわせようとする
想定とは異なる使い方をした場合、コンパイルエラーが起きます。
もちろん、文字列に数値を(文字列として)くっつけたい場合もあるかもしれません。
そういう場合は、数値を文字列に変換してから
文字列同士を結合すれば、コンパイルエラーは出なくなる、というわけです。
また、F#では、型を組み合わせることで
さらに新しい型を作ることが出来ます。
例えば、総称型やクラス、判別共用体(Discriminated Union)などが利用でき、
型の種類に制約を与える機能も利用出来ます。
これらについては先の章で解説予定ですが、
このような機能を利用することで
型チェックの利点を生かしたまま
抽象化能力を手に入れることが出来ます。
-ここは、最初は飛ばしても問題ないです-
なお、null値(null value)という特殊な値がありますが
これは通常、F#の値(value)として使われたり、変数(variable)に格納されたりすることはありません。
とあります。
これは.Net Frameworkとの連携のためにある値で、
F#は出来るだけnullの利用を減らそうとしているそうです
また、値としてのnullはunit型の値やoption型のNoneに使われています
null value
> printfn "%A" ();;
<null>
> printfn "%A" None;;
<null>
val it : unit = ()