top page > computer > haskell > web_lecture > for_programmer > letin.html
更新日:
文責: 重城良国

構文: let ... in ...式

ローカル変数

ローカル変数が使いたい。可読性のためDRY(Don't repeat yourself)原則を守るため実行効率のためにだ。

使えるよ

今までの枠組みでローカル変数を作って使うことは可能だ。

% ghci
Prelude> (\x -> x ^ x) 5
3125

ローカル変数xに5を代入してxのx乗を計算している。

つまり

ローカル変数と仮引数は同じだ。

(\var -> [varを使った式]) val

ローカル変数varをvalで束縛して式を評価している。

もっとローカル変数らしく

もうすこし甘くしないとだ。let ... in ...という構文糖がある。

let var = val in [varを使った式]

Prelude> (\x -> x ^ x) 5
3125
Prelude> let x = 5 in x ^ x
3125

複数のローカル定義

無名関数で

(\x y -> x * y) 3 5

let ... in ...構文で

レイアウトルールを使って書く。

z = letx = 3
y = 5 in
x * y

x = 3とy = 5は兄弟要素なのでインデントをそろえる。

まとめ

ローカル変数をよりわかりやすく使えるように構文let ... in ...がある。意味論的には関数の作成と引数への適用の範囲を越えるものではない。単なる構文糖だ。

より高度な話題: 再帰的定義への対応

let ... in ...では変数定義部分での再帰的定義ができる。この機能の実現のため脱糖はより複雑になる。詳しい説明は関数fixを扱ったあとに行う予定だ。

let ... in ...による変数定義における再帰 (スタブ)

「モンテカルロ法のコーディング」へもどる 「構文: where節」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics