2016-04-01 8 views
0

のための関数のパラメータの順序私は以下のようなマップ機能を持っていると仮定します。誰もが私は欠けていた知識ピンポイントでした、私はlet rec map xs fにマップの署名を変更したときに、私はいくつかのエラーを得たocamlの

let rec map f xs = match xs with 
[] -> [] 
| hd :: tl -> f hd :: (map f tl) 

と理由を説明します

答えて

2

定義と再帰呼び出しを変更しても問題ありません。

# let rec map xs f = match xs with 
    [] -> [] 
    | hd :: tl -> f hd :: (map tl f);; 
val map : 'a list -> ('a -> 'b) -> 'b list = <fun> 
# map [3; 5; 7] ((+) 1);; 
- : int list = [4; 6; 8] 
2

あなたが変更することを確認する必要がありf

唯一のものでxsを切り替えることができるはずはあなたが(map f tl)から(map tl f)

を持っている3行目の順序であります