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).

乱数と照合する慣用的なF#の方法(または単にif-else'ing)は何でしたか?

4

1 に答える 1

6

コメントのように、これを一般的に解決するには、停止性問題を解決する必要があります。結果として、最善の方法はおそらく

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