プログラミング言語SML#解説 3.7.1版
7.17 let式
MLプログラミングの基本は,種々の式を定義しそれらに名前を付け組み 合わせていくことです. これまで見てきた例では,名前はすべてトップレベルに記録されていま した. しかし,大きなプログラムでは,一時的に使用する多数の名前が必要と なり,それら名前を管理する必要があります. 例えばfactは,トップレベルに定義されたloopを使って定 義されていますが,この名前はfactの定義のためだけに導入されたもので あり,他の関数ではべつなループ関数が必要です. そこで,これら特定の処理にのみ必要な名前のスコープ(有効範囲)を 制限できれば,より整理され構造化されたコードとなります. そのために,以下のlet構文が用意されています.
let in end | ||||
val = | ||||
fun = | ||||
letとinの間には,inとendの式の中だけで有 効な宣言が書けます. 例えば,末尾再帰のfact関数は,通常以下のように定義します.
fun factorial n =
let
fun loop (s, 0) = s
| loop (s, i) = loop (s * i, i - 1)
in
loop (1, n)
end