次のように私は、いくつかの実装を見てきました:OCamlのこれら二つの関数定義はどのように異なっていますか?
let rec fact =
fun n ->
if n <= 0 then 1 else n * fact (n - 1)
別の実装は次のとおりです。
let rec fact n =
if n <= 0 then 1 else n * fact (n - 1)
これらの2つのスタイルとの間の差がある場合、誰が教えてもらえますか?
次のように私は、いくつかの実装を見てきました:OCamlのこれら二つの関数定義はどのように異なっていますか?
let rec fact =
fun n ->
if n <= 0 then 1 else n * fact (n - 1)
別の実装は次のとおりです。
let rec fact n =
if n <= 0 then 1 else n * fact (n - 1)
これらの2つのスタイルとの間の差がある場合、誰が教えてもらえますか?
これらの定義は同等です。表記
let rec f a b c = <expr>
は(のためのシンタックスシュガー)を書くのに便利な方法です:
let rec f = fun a b c -> <expr>
あなたはこの見出しローカル定義下、section 6.7.1 of the OCaml manualで説明を見つけることができます。
構文上の違いはありません。第2の形式は、第1の形式と等価であると定義される。
通常、2番目の形式が文章上の理由から好まれます。let
の行で、関数を定義していることがわかります。最初のものでは、それを理解するためにfun
を読まなければなりません。
(私はOCamlを使用しません)マッチャーを適用するにはどうしたらいいですか? –
'function'または' match'キーワードを使用します。 –