1
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!"
;;

根据编译器的说法,上面的 match 语句并不详尽。这是完全合法的,因为 F# 没有可以保证随机数范围的语法信息。

Incomplete pattern matches on this expression. For example, the value '3' may indicate a case not covered by the pattern(s).

与随机数匹配(或者只是 if-else'ing)的惯用 F# 方式是什么?

4

1 回答 1

6

如评论中所述,解决此问题通常需要解决停机问题。因此,最好的办法可能是

|_ -> failwith "broken RNG"
于 2012-09-28T08:37:13.247 回答