コンパイラ – 原理と構造 – 初版 正誤表
コンパイラ – 原理と構造 – 初版 正誤表

第 6 章 型の解析と型推論

  1. 48.

    103ページ 4行目

    誤:

    式を表すメタ変数e

    正:

    式,定数,演算を表すメタ変数ecp


  2. 49.

    103ページ 7行目

    誤:

    n  | s  | true | false

    正:

    n  | s  | true | false


  3. 50.

    103ページ 12行目

    追加:

    されている.以降,メタ変数cpを文法の非終端記号としても使用する.

  4. 51.

    109ページ 15行目

    誤:

    規則(var),(int),(true),(false)

    正:

    規則(var),(const)


  5. 52.

    110ページ 4行目

    誤:

    Γ1Γ1が等しく

    正:

    Γ1Γ2が等しく


  6. 53.

    114ページ 1行目

    誤:

    (u-i)({(τ,τ)E},S)(E,S)

    正:

    (u-i)({(τ,τ)}E,S)(E,S)


  7. 54.

    114ページ 2行目

    誤:

    (u-ii)({(t,τ)}E},S)({t:τ}(E),{(t,τ)}{t:τ}(S))

    正:

    (u-ii)({(t,τ)}E,S)({t:τ}(E),{(t,τ)}{t:τ}(S))


  8. 55.

    114ページ 3行目

    追加:

    (ただしtFTV(τ)のとき.(τ,t)に対しても同様の規則を仮定.)

  9. 56.

    114ページ 下から2行目

    誤:

    ある型代入S3があってS2=S1S3となるとき

    正:

    ある型代入S3があってS2=S3S1となるとき


  10. 57.

    116ページ 下から3行目

    誤:

    𝒰(matches(Γ1,Γ2)matches(Γ1,Γ2)matches(Γ1,Γ2)(ヌケ)

    正:

    𝒰(matches(Γ1,Γ2)matches(Γ1,Γ3)matches(Γ2,Γ3)


  11. 58.

    117ページ 9行目

    誤:

    PTS(𝟷)=x:𝚒𝚗𝚝

    正:

    PTS(𝟷)=𝟷:𝚒𝚗𝚝


  12. 59.

    124ページ 16行目

    誤:

    let val (tyEnv, ty) =
              case dec of Syntax.VAL (id, exp) => PTS exp
                        | Syntax.FUN (f, x, exp) => PTS exp

    正:

    let val exp = case dec of
                        Syntax.VAL (id, exp) => exp
            val (tyEnv, ty) = PTS exp


  13. 60.

    124ページ 26行目

    誤:

    handle UnifyTy.Unify =>

    正:

    handle UnifyTy.UnifyTy =>


  14. 61.

    131ページ 6行目(図6.8のラベル)

    誤:

    (int)

    正:

    (const)


  15. 62.

    131ページ (「・トップレベルの導出:」の図)

    誤:
    :¯   (top)     𝒟1
    val id = fn x => x:{𝚒𝚍:(t).tt}¯   (top)    𝒟2
    val id = fn x => x; val x = id 1:{𝚒𝚍:(t).tt,𝚡:𝚒𝚗𝚝}¯   (top)

         

    正:
    :¯   (nil)     𝒟1
    val id = fn x => x:{𝚒𝚍:(t).tt}¯   (val)    𝒟2
    val id = fn x => x; val x = id 1:{𝚒𝚍:(t).tt,𝚡:𝚒𝚗𝚝}¯   (val)

  16. 63.

    132ページ 13行目

    誤:

    S2=𝒰({(τ,t1*t2)} “)”ヌケ    (t1,t2 fresh)

    正:

    S2=𝒰({(τ,t1*t2)})    (t1,t2 fresh)


  17. 64.

    132ページ 15行目

    誤:

    if e1 then e1 else e3

    正:

    if e1 then e2 else e3


  18. 65.

    132ページ 19行目(𝒲定義の7番目)

    誤:
    𝒲(Γ,if e1 then e1 else e3)=
    let (S1,τ1)=𝒲(Γ,e1)
    (S2,τ2)=𝒲(S1(Γ),e2)
    (S3,τ3)=𝒲(S2S1(Γ),e3)
    S4=𝒰({(S3S2(τ1),𝚋𝚘𝚘𝚕),(S2(τ2),τ3)})
    in (S4S3S2S1,S4(τ3))
    正:
    𝒲(Γ,if e1 then e1 else e3)=
    let (S1,τ1)=𝒲(Γ,e1)
    (S2,τ2)=𝒲(S1(Γ),e2)
    (S3,τ3)=𝒲(S2S1(Γ),e3)
    S4=𝒰({(S3S2(τ1),𝚋𝚘𝚘𝚕),(S3(τ2),τ3)})
    in (S4S3S2S1,S4(τ3))