昨日、コーディング演習の一環としていくつかの F# コードに取り組んでいるときに、別の開発者が興味深いことを指摘しました。リストの合計を示す簡単なコードを実行したところです。私が行った場合:
[1..100000] |> Seq.sum
次のエラーが表示されます。
System.OverflowException: Arithmetic operation resulted in an overflow.
at <StartupCode$FSI_0003>.$FSI_0003.main@()
Stopped due to error
しかし、もしそうなら:
[1..100000] |> List.reduce (+)
私は得る:
val it : int = 705082704
これら 2 つのコードは同じ目的を達成するはずですが、非常に異なっていることがわかります。List.reduce に、悪い答えを返すのではなく、OverflowException をスローさせる方法はありますか?