ラムダプラス+

正誤表 (第一版)

ラムダプラス+にいくつか誤りが発見されております。ご迷惑をおかけして申し訳ありません。次のとおり修正します。

場所 変更前 変更後 備考
P.4 練習問題 1 function(){ return 1; } function(x) { return 1; }
P.5 R-Beta t_2 e_2
P.5 10 行目、11 行目 t_2 / x e_2 / x
P.6 R-App1, R-App2, およびその後の文, R-Abs t e t のままでも意味は通じますが、式(項) は e を使うよう読みなおしてください。t は型変数で使っています。
P.42 specialize の定義の末尾 (flip (,) ref) (,) ref

今回のラムダプラス+ではわざと「単相型」の説明をしませんでした。紙面の都合および、今回の範囲ではそれほど重要ではない、と思ったからなのですが、やはり説明すべきでした。単相型を省いてしまったために誤った型付けがなされる場合があります。例えば、let f g = let h = g in ... のようなコードを型推論するとき、let h = g in で g は型変数を持っているのですが、現在の定義だと h が多相型になってしまいます。本当は h に forall を付けてはいけません。より詳しい定義は、TaPL を参照していただければと思います。

0001-01-01