因此,昨天在编写一些 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
我意识到尽管这两段代码应该实现相同的目的,但它们却非常不同。我只是好奇有没有办法让 List.reduce 抛出 OverflowException 而不是给我一个错误的答案?