F#では数値に対して"単位"を設定できるので、計算ミスが減るのです
"長さ(m or km etc)"やら"時間(s or hour etc)"などの単位が絡んだ計算、特に金融なんかだと為替レートが絡んだ計算で、かけ算すべきなのか割り算すべきなのかよく間違えますよね?そんな貴方にお勧めしたいF#です。
以下、ドル円レートの変換を計算するという超簡単なサンプルコード。間違った単位間の計算の場合はコンパイルエラーとなるのでミスが未然に防げます。
//単位の定義 [<Measure>] type USD [<Measure>] type JPY [<Measure>] type USDJPY = JPY/USD [<EntryPoint>] let main argv = //3ドルが日本円換算でいくらになるのか?という計算 let amountInUSD = 3<USD> let fx = 105<JPY/USD>(*<JPY/USD>と書いておいてもよい*) //円での3ドルの価値 let amountInJPY : int<JPY> = amountInUSD*fx //↓以下のコードは、以下の「単位が合っていませんよ!」エラーで怒られる!!! //let amountInXXX : int<JPY> = amountInJPY*fx //エラー 1 The unit of measure 'JPY' does not match the unit of measure 'JPY USDJPY' printfn "%dUSDは、ドル円レートが%d円/ドルの時、%dJPYです" (amountInUSD |> int) (fx |> int) (amountInJPY |> int) 0
実行結果
3USDは、ドル円レートが105円/ドルの時、315JPYです
もっと詳しく知りたい場合は、以下を参照。