Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.

Similar presentations


Presentation on theme: "プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1."— Presentation transcript:

1 プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1

2 演習7.1 解答と解説 ① (λx.λy.yx)ab →β (λy.ya)b →β ba
プログラミング言語論 演習7.1 解答と解説 ① (λx.λy.yx)ab →β (λy.ya)b →β ba ((λx.(λy.yx))a)b と考える ↑ (λx.(λy.yx))a をまず簡約 関数適用は左結合 2 演習7 解答と解説

3 演習7.1 解答と解説 ② λx.λy.axy →η λx.ax →η a (λx.(λy.axy)) ↑ 内側からη変換 3

4 演習7.1 簡約の表記について 表記に注意する 以下のような表記は不可 = =β →β 次のような書き方は、ある ⇒ β 4
プログラミング言語論 演習3についての補遺プログラミング言語論 演習7.1 簡約の表記について 表記に注意する 以下のような表記は不可 =β →β 次のような書き方は、ある 4 β プログラミング言語論 4 4

5 × 演習7.1 簡約の表記について 簡約は、推移的ではない したがって、 λx.λy.axy →η λx.ax →η a
プログラミング言語論 演習3についての補遺プログラミング言語論 演習7.1 簡約の表記について 簡約は、推移的ではない したがって、 λx.λy.axy →η λx.ax →η a を、以下のように省略して書くことはできない λx.λy.axy →η a × 5 プログラミング言語論 5 5

6 演習7.1 簡約の表記について 反射的推移閉包 を定義して、 以下のように書くことは可 λx.λy.axy →* a (関係→を、
演習3についての補遺プログラミング言語論 プログラミング言語論 演習7.1 簡約の表記について 反射的推移閉包 を定義して、 以下のように書くことは可 λx.λy.axy →* a (関係→を、 → = →α∪→β∪→η とし、その反射的推移閉包を →*とする) 期末試験では、この書き方は不可 6 プログラミング言語論 6 6

7 演習7.1 簡約の表記について 反射的推移閉包については、 「プログラミング言語の基礎」 の 『3.6 反射的推移閉包』 を参照 7

8 演習7.2 解答 (define fib (lambda (n) (cond ((<= n 0) 0) ((= n 1) 1) (else (+ (fib(- n 1)) (fib(- n 2)) )) ))) 8

9 演習7.2 解答 (別解) (define fib (lambda (n) (if (<= n 0) 0 (if (= n 1) 1 (+ (fib(- n 1)) (fib(- n 2)) )) ))) 9

10 演習7.2 解説 改行位置は任意 括弧の数に注意すること 10

11 演習7.3 (1) 解説 ( i ) は、要素が一つだけのリスト S式は ( i . () ) であり、木にすると となる
これを、 love、cats と並べてリストにする i () 11

12 ( (i . ()) . (love . (cats . ())) )
演習7.3 (1) 解答 i () love () cats ( (i . ()) . (love . (cats . ())) ) 12

13 (that is x) = (that . (is . (x . () )))
演習7.3 (2) 解説 x = (the question) とすると、リストは この xを で置き換える (that is x) = (that . (is . (x . () ))) x = (the . (question . () )) 13

14 (that . (is . ((the . (question . () )) . () )))
演習7.3 (2) 解答 that is () the question () (that . (is . ((the . (question . () )) . () ))) 14

15 演習7.4 解説 ((to be) or (not to be) that is (the question)) (or (not to be) that is (the question)) ((not to be) that is (the question)) cdr cdr 15

16 (that is (the question))
プログラミング言語論 演習7.4 解答 or (1) (2) (that is (the question)) cdr の結果は、常にリストであることに注意する。 注:カッコの有無に注意 16 演習7 解答と解説


Download ppt "プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1."

Similar presentations


Ads by Google