変数束縛このページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。 last mod. 2008-04-07 (月) 15:15:50
OCamllet var = value の形式で束縛します。対話環境でも使用できます。 let x = 1;; 関数は、 let f args = ... の形式で宣言します。 これは let f = fun args -> ... のシンタックスシュガーです。 let f x = x;; ただし、再帰的な関数を定義するには、let recが必要になります。 let rec fact n = if n = 0 then 1 else n * fact (n-1);; OCaml 3.07以降では、関数値以外でも再帰的に定義することが可能になりました。 let rec a = 1 :: a;; (* [1; 1; 1; 1; 1; ... ] と無限に続くリスト *) SMLval var = value の形式で束縛します。対話環境でも使用できます。 val x = 1; 関数は、 fun f arg = ... の形式で宣言します。 これは val f = fn args => ...のシンタックスシュガーです。 fun f x = x; OCamlと異なり、再帰的な関数を定義する際、特別なキーワードは不要です。 fun fact n = if n = 0 then 1 else n * fact (n-1); Haskellvar = value の形式で束縛できます。 Hugsの対話環境では使用できません。GHCの場合、let x = 1のようにすることで、束縛できます。 x = 1 関数はf args = ... の形式で宣言します。これは f = \args -> ... のシンタックスシュガーです。 f x = x 再帰的定義も特別なキーワードは必要としません。 fact n = if n == 0 then 1 else n * fact (n-1) |