時々私は`fun`と` function`キーワードの違いは何ですか?
let (alt : recognizer -> recognizer -> recognizer) =
fun a b p -> union (a p) (b p)
などのようなコードを参照してください。
let hd = function
Cons(x,xf) -> x
| Nil -> raise Empty
fun
とfunction
の違いは何ですか?
時々私は`fun`と` function`キーワードの違いは何ですか?
let (alt : recognizer -> recognizer -> recognizer) =
fun a b p -> union (a p) (b p)
などのようなコードを参照してください。
let hd = function
Cons(x,xf) -> x
| Nil -> raise Empty
fun
とfunction
の違いは何ですか?
(F#はOCamlで基づいているためか)、このためのセマンティクスはF#の場合と同じである:
function
(すなわち|
)パターンの使用が一致することができますが、結果的にそれだけで渡すことができます1つの議論。
function p_1 -> exp_1 | … | p_n -> exp_n
例えば、パターンマッチングを許可していないが、複数の引数を渡すことができ
fun exp -> match exp with p_1 -> exp_1 | … | p_n -> exp_n
fun
と等価です二つの形式のいずれかを使用することができる
fun x y -> x + y
、fun
一般に、そのコンパクトさに好ましいです。
OCaml documentation on Functionsも参照してください。
Russ Camは彼の答えで正しいです。ここで
は
それについてfunction
を話してOCamlのリスト上の投稿には、一つだけの引数が可能になりますが、fun
は、関数を定義するために、より一般的で柔軟な方法である一方で、パターンマッチングを可能にしています。
機能を使用する正当な理由がない限り、私は一般的に楽しく使っています。
あなたはfun
宣言は3つの引数を取り、あなたが投稿のコードでこれを見ることができるとfunction
宣言は、それの入力
'fun x'や' function'を使わずに 'let x y z = y + –
@Rosarch、はい、もちろんです。私はその質問が無名関数定義について暗黙のうちにあると思う。 –
@Rosarch、確かに:) – chollida
に
function patterns
がの省略形です、私はそれについて考える方法をパターンマッチングを行います
(fun x -> match x with patterns)
ここで、「パターン」は、
| Some(x) -> yadda | None -> blah
(そして
fun args -> expr
あなたがラムダを定義する方法です。)
ここにあなたの意図以外の意味があるので、 'fun'タグを削除しました。私は、無視リストを使用してフィルタリングする人がいるので、それがなくても問題は改善されると思う。 –