- 値呼出し (call by value) => 最内簡約
- 名前呼出し(call by name) => 最外簡約
- 必要呼出し(call by need) => 最外簡約かつグラフ簡約
最内簡約
先に引数を簡約してから関数を展開
square (1+3)
→ square 4
→ 4 * 4
→ 16
最外簡約
関数を展開してから引数を簡約
square (1+3)
→ (1+3) * (1+3)
→ 4 * (1+3)
→ 4 * 4
→ 16
グラフ簡約
引数を式へのポインタにして関数を展開する
(同じ引数が二度以上評価されることはない)