これらは、お互いのショートカットです。
最も基本的なものはlet
です。このキーワードは、ものに名前を与える:
let name = "stuff"
より技術的に言えば、let
キーワードは、識別子を定義し、値にバインド:
この後
let identifier = "value"
、あなたの中の言葉name
とidentifier
を使用することができますコンパイラはそれらが何を意味するのか知るでしょう。let
がなければ、名前を付ける方法はなく、名前でチャンクを参照するのではなく、すべてのものをインラインで書く必要があります。
は今、値が異なる種類があります。文字列"some string"
がありますが、整数42
があり、ポイント数5.3
フローティング、ブールようにtrue
値、および。特別な種類の値は関数です。関数も値で、ほとんどの点で文字列や数値に似ています。しかし、どのように関数を書いていますか?文字列を書くには二重引用符を使用しますが、関数はどうですか?
まあ、関数を記述するために、あなたは特別な言葉fun
使用:
ここ
let squareFn = fun x -> x*x
を、私は識別子squareFn
を定義し、関数の種類の値にその識別子をバインドするlet
キーワードを使用していました。今では私のプログラムでsquareFn
という単語を使うことができ、コンパイラは私がそれを使う度にいつも関数fun x -> x*x
を意味することを知っています。
この構文を書くのは、常に便利技術的には十分ではなく、です。だから、短いようにするために、結合let
は、上記の書き込みにそれ自体の上に余分な責任を取り、短い方法を提供します:
fun
対
let
のためにそれを行う必要があります
let squareFn x = x*x
。
ここでfunction
キーワードは、fun
+ match
の略語です。 function
を書くことは、fun x -> match x with
、ピリオドを書くことと同じです。例えば
、以下の3つの定義は等価です:
let f = fun x ->
match x with
| 0 -> "Zero"
| _ -> "Not zero"
let f x = // Using the extra convenient form of "let", as discussed above
match x with
| 0 -> "Zero"
| _ -> "Not zero"
let f = function // Using "function" instead of "fun" + "match"
| 0 -> "Zero"
| _ -> "Not zero"
あなたがまた 'V'と' A'が何であるかを教えている場合、あなたに選択肢を示すために、少し簡単になるだろう。 –
"関数"はパイプライン式で独自の "一致"の一種です。例えばx |>関数| case1 - > ... | case2 - > ...いいスタイルです。 – sgtz