Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功.

Similar presentations


Presentation on theme: "プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功."— Presentation transcript:

1 プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功

2 練習問題1 (問1) ラムダ式 (z. z) w 中の自由変数を求めよ。
(問2) ラムダ式 (λz. z y) ((λz. z) w) 中の自由変数を求めよ。

3 練習問題1解答例 (問1) ラムダ式 (z. z) w 中の自由変数を求めよ。
FV((z. z) w) = FV((z. z))  FV (w) = (FV (z) \ {z})  {w} = ({z} \ {z})  {w} = { }  {w} = {w} (問2) ラムダ式 (λz. z y) ((λz. z) w) 中の自由変数を求めよ。 FV((λz. z y) ((λz. z) w)) = FV(λz. z y)  FV((λz. z) w) = (FV (z y) \ {z})  (FV(λz. z)  FV(w)) = ((FV (z)  FV(y)) \ {z})  ((FV(z) \ {z})  {w}) = (({z}  {y}) \ {z})  (({z} \ {z})  {w}) = ({z,y} \ {z})  ({ }  {w}) = {y}  {w} = {y, w}

4 練習問題2 (問1) 置換 (x y) [z/x] を計算せよ。 (問2) 置換 (λy. x y) [z/x] を計算せよ。
(問3) 置換 (λy. x y) [y/x] を計算せよ。 (問4) 置換 (λy. x y) [λz. z y/x] を計算せよ。

5 練習問題2解答例 (問1) 置換 (x y) [z/x] を計算せよ。 (x y) [z/x] = (x [z/x]) (y [z/x])
= z y (問2) 置換 (λy. x y) [z/x] を計算せよ。 (λy. x y) [z/x] = λy. ((x y) [z/x]) = λy. ((x [z/x]) (y [z/x])) = λy. (z y) (括弧は省略可) (問3) 置換 (λy. x y) [y/x] を計算せよ。 (λy. x y) [y/x] = λz. (((x y) [z/y]) [y/x]) = λz. (((x [z/y]) (y [z/y])) [y/x]) = λz. ((x z) [y/x]) = λz. ((x [y/x]) (z [y/x])) = λz. (y z) (括弧は省略可)

6 練習問題2解答例(続き) (問4) 置換 (λy. x y) [λz. z y/x] を計算せよ。
(λy. x y) [λz. z y/x] = λw. (((x y) [w/y]) [λz. z y/x]) = λw. (((x [w/y]) (y [w/y])) [λz. z y/x]) = λw. ((x w) [λz. z y/x]) = λw. ((x [λz. z y/x]) (w [λz. z y/x])) = λw. ((λz. z y) w) (外側の括弧は省略可)

7 練習問題3 (問1) ラムダ式 (λx. x y) (λz. z) にβ変換を適用せよ。
(問2) ラムダ式 (λx. (λy. x y)) (λz. y z) にβ変換を適用せよ。 (注意)この問題では、β変換を一度だけ適用するものとする。

8 練習問題3解答例 (問1) ラムダ式 (λx. x y) (λz. z) にβ変換を適用せよ。
(λx. x y) (λz. z)  (x y) [λz. z/x] = (x [λz. z/x]) (y [λz. z/x]) = (λz. z) y (さらにもう一度β変換は適用可能) (問2) ラムダ式 (λx. (λy. x y)) (λz. y z) にβ変換を適用せよ。 (λx. (λy. x y)) (λz. y z)  (λy. x y) [λz. y z/x] = λz. (((x y) [z/y]) [λz. y z/x]) = λz. (((x [z/y]) (y [z/y])) [λz. y z/x]) = λz. ((x z) [λz. y z/x]) = λz. ((x [λz. y z/x]) (z [λz. y z/x])) = λz. ((λz. y z) z) (外側の括弧は省略可)

9 練習問題4 ラムダ式 (x. y. x y) (z. z) w は、何度か変換を行うことによってwに変換できるが、その過程を示せ。
9

10 練習問題4解答例 (x. y. x y) (z. z) w  (λy. (λz. z) y) w  (λy. y) w  w
または (x. y. x y) (z. z) w  (λy. (λz. z) y) w  (λz. z) w  w (注意)上記において、置換を用いた記述は省略している。 10

11 練習問題5 ラムダ式 (λx. λy. x y) (λx. x y) wに対して、β変換を適用する箇所のないラムダ式になるまでβ変換を適用せよ。また、この例では途中で、2通りの適用可能性のあるラムダ式が出てくる。2通りのβ変換列を示せ。 11

12 練習問題5解答例 (x. y. x y) (λx. x y) w  (λz. (λx. x y) z) w  (λz. z y) w
 w y または、  (λx. x y) w (注意)上記において、置換を用いた記述は省略している。 12


Download ppt "プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功."

Similar presentations


Ads by Google