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

第 6 章 型の解析と型推論

  1. 40.

    103ページ 4行目

    誤:

    式を表すメタ変数e

    正:

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


  2. 41.

    103ページ 7行目

    誤:

    n  | s  | true | false

    正:

    n  | s  | true | false


  3. 42.

    103ページ 12行目

    追加:

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

  4. 43.

    109ページ 15行目

    誤:

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

    正:

    規則(var),(const)


  5. 44.

    110ページ 4行目

    誤:

    Γ1Γ1が等しく

    正:

    Γ1Γ2が等しく


  6. 45.

    114ページ 1行目

    誤:

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

    正:

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


  7. 46.

    114ページ 2行目

    誤:

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

    正:

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


  8. 47.

    114ページ 3行目

    追加:

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

  9. 48.

    114ページ 下から2行目

    誤:

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

    正:

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


  10. 49.

    116ページ 下から3行目

    誤:

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

    正:

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


  11. 50.

    117ページ 9行目

    誤:

    PTS(𝟷)=x:𝚒𝚗𝚝

    正:

    PTS(𝟷)=𝟷:𝚒𝚗𝚝


  12. 51.

    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. 52.

    124ページ 26行目

    誤:

    handle UnifyTy.Unify =>

    正:

    handle UnifyTy.UnifyTy =>


  14. 53.

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

    誤:

    (int)

    正:

    (const)


  15. 54.

    132ページ 13行目

    誤:

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

    正:

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


  16. 55.

    132ページ 15行目

    誤:

    if e1 then e1 else e3

    正:

    if e1 then e2 else e3


  17. 56.

    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))