評価戦略

  • 値呼出し (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

グラフ簡約

引数を式へのポインタにして関数を展開する
(同じ引数が二度以上評価されることはない)