3
で動作しますなぜ、以下の機能が、我々は1つのparamでそれを宣言しても、2つの引数で動作しますなぜ私が理解することはできません。つのパラメータOCamlの関数は二つの引数
let rec removeFromList e = function
h :: t -> if h=e then h
else h :: removeFromList e t
| _ -> [];;
removeFromList 1 [1;2;3];;
**(1)**関数 'removeFromList'ウォン:
だから、あなたの定義は、実際にある
のショートカットとして見ることができます'removeFromList'の他の定義を含む文脈で囲まれていない限り、コンパイルしません。私はこれを 'let rec removeFromList ... 'のように定義しようとしていたと信じています。 **(2)**コンパイラは、関数本体の '[]'の大文字小文字の不一致について文句を言います。 –
ありがとう、私はそれを間違って書いた;これでOKになるはずです –
* OCamlのすべての*関数は常に1つの引数をとります。 'removeFromList et'(関数アプリケーションが左結合であるため、'(removeFromList e)t 'として解析する)構文は単に 'removeFromList'を' e'に適用し、その結果を関数に適用します。 tにする。 – newacct