この 2 つの機能は同じだと思っていましたが、間違っていたようです。2 つの関数 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
これら2つの機能の違いは何ですか?
編集
なぜここで機能するのですか?
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]