我以为这两个功能是一样的,但似乎我错了。我以这种方式定义了两个函数 f 和 g:
let rec f n k =
match k with
|_ when (k < 0) || (k > n) -> 0
|_ when k = n -> 100
|_ -> (f n (k+1)) + 1
let rec g n k =
match k with
|_ when (k < 0) || (k > n) -> 0
| n -> 100
|_ -> (g n (k+1)) + 1
let x = f 10 5
let y = g 10 5
结果是:
val x : int = 105
val y : int = 100
谁能告诉我这两个功能有什么区别?
编辑
为什么它在这里工作?
let f x =
match x with
| 1 -> 100
| 2 -> 200
|_ -> -1
List.map f [-1..3]
我们得到
val f : x:int -> int
val it : int list = [-1; -1; 100; 200; -1]