open System
let random_number_generator = System.Random(int System.DateTime.Now.Ticks) in
let random_number_below n = random_number_generator.Next(n) in
match random_number_below 3 with
| 0 -> "Zero!"
| 1 -> "One!"
| 2 -> "Two!"
;;
Run Code Online (Sandbox Code Playgroud)
根据编译器,上述匹配语句并非详尽无遗.这是完全合法的,因为F#有将保证随机数的范围没有语法信息.
Incomplete pattern matches on this expression. For example, the value '3' may indicate a case not covered by the pattern(s).
Run Code Online (Sandbox Code Playgroud)
对于一个随机数,匹配的惯用F#方式(或者只是if-else')是什么?
正如在评论中一样,解决这个问题通常需要解决暂停问题.因此,最好的办法可能就是
|_ -> failwith "broken RNG"
Run Code Online (Sandbox Code Playgroud)