EoPL

EoPL reading (101) 2.2 An Abstraction for Inductive Data Type

日を跨いだのでエントリを分けます。煮つまったので氷を買うついでに散歩。散歩しつつ、app-term なナニは分けちゃえ、な思いつきを基に以下がでっち上がりました。

EoPL reading (100) 2.2 An Abstraction for Inductive Data Type

もう 100 だ (何 それは良いとして 2.2 ラストの Exercise 2.13 着手。 Exercise 2.13 とりあえず、以下が示されてます。 (define-datatype term term? (var-term (id symbol?)) (constant-term (datum constant?)) (app-term (terms (list-of term?))))list…

EoPL reading (99) 2.2 An Abstraction for Inductive Data Type

eta-conversion な検討。なんとなく試験から書いてみる。

EoPL reading (98) 2.2 An Abstraction for Inductive Data Type

beta-reduction の検討着手。

EoPL reading (97) 2.2 An Abstraction for Inductive Data Type

PTaL 読まねば、と言いつつ途中で切り上げて alpha-conversion をヤッツケるべく、こちらに再度着手。

EoPL reading (96) 2.2 An Abstraction for Inductive Data Type

微妙な検討が続いています。未だもって腑にオチてなかったりして。

EoPL reading (95) 2.2 An Abstraction for Inductive Data Type

ええと、色々な意味で理解が微妙なので occurs-free? な試験から再度検討し直す事にしました。

EoPL reading (94) 2.2 An Abstraction for Inductive Data Type

ええと、alpha-conversion な subst の lambda なブロックが以下なコトをチェキ。 (lambda-exp (id body) (lambda-exp id body))変換してない。そりゃこうなるわな。 test subst y (lambda (x) (lambda (x) y)), expects (lambda-exp x (lambda-exp x (var-e…

EoPL reading (93) 2.2 An Abstraction for Inductive Data Type

よく見たらバグってない? test subst y (lambda (x) (lambda (x) y)), expects (lambda-exp x (lambda-exp x (var-exp y))) ==> ok test subst y (lambda (x) (lambda (y) y)), expects (lambda-exp y (lambda-exp y (var-exp y))) ==> ok test subst y (lam…

EoPL reading (92) 2.2 An Abstraction for Inductive Data Type

現時点での試験、lambda 式なナニが以下。 <subst lambda experssion>------------------------------------------------------ test subst y (lambda (x) (lambda (x) y)), expects (lambda-exp x (lambda-exp x (var-exp y))) ==> ok test subst y (lambda (x) (lambda (y) y)), exp</subst>…

EoPL reading (90) 2.2 An Abstraction for Inductive Data Type

以下の式を beta-reduction に吸わせた場合、ループする事が判明。 ((lambda (x) ((lambda (y) (+ x y)) x)) y)そりゃ、そのまんまお互い (beta-reduction と substitute) で同じモノ渡しやっこしてるんだから当たり前っちゃ当たり前か。

EoPL reading (91) 2.2 An Abstraction for Inductive Data Type

なんとなくストレスフルな今日この頃。なかなか昼間に検討時間が取れぬ、と言いつつ現実トウヒし放題だったりするんですが、現時点での実装が以下です。

EoPL reading (89) 2.2 An Abstraction for Inductive Data Type

Exercise 2.12 ええと昨晩遅くに残したメモを見つつ * 一つだったよな、と言いつつ以下がでっち上がった。さほど時間かかってません。

EoPL reading (88) 2.2 An Abstraction for Inductive Data Type

Exercise 2.12 とりあえず alpha conversion な試験を書いてみる。

EoPL reading (82) 2.2 An Abstraction for Inductive Data Type

alpha conversion とか beta reduction とか eta conversion とか。wikipedia 見ても若干意味不明。 例示されているものとしては ((lambda (f) (f 3)) (lambda (x) (+ x 2)))と ((lambda (x) (+ x 2)) 3)と (+ 3 2)は同じ、とある。上記はbeta reduction の…

EoPL reading (81) 2.2 An Abstraction for Inductive Data Type

検討再開。とりあえず fresh-id と all-ids がポイント高い、という事で例示されている手続きを吸わせてみる事に。 gosh> (all-ids '(lambda-exp p (app-exp (var-exp +) (app-exp (var-exp p) (var-exp x))))) (p + x) gosh> ええと、 (lambda (p) (+ p x))…

EoPL reading (80) 2.2 An Abstraction for Inductive Data Type

天気は良いのですが波が高いはずなので外に遊びに行く気にならない。買い物してきて帰宅後に検討着手。 Exercise 2.11 expression を以下に修正。 (add-load-path ".") (load "define-datatype") (define-datatype expression expression? (var-exp (id symb…

EoPL reading (79) 2.2 An Abstraction for Inductive Data Type

lisp と将棋エンジンに取り組んでいるヒトの記事を見た。具体的なアウトプットって良いなぁ。 Exercise 2.10 とりあえず以下をでっち上げてみました。 (add-load-path ".") (load "define-datatype") (define all-ids (lambda (exp) (cases expression exp (…

EoPL reading (78) 2.2 An Abstraction for Inductive Data Type

Exercise 2.9 ここで扱う parse-expression は例示されている以下が対象という事で。 (define parse-expression (lambda (datum) (cond ((symbol? datum) (var-exp datum)) ((pair? datum) (if (eqv? (car datum) 'lambda) (lambda-exp (caadr datum) (parse…

EoPL reading (77) 2.2 An Abstraction for Inductive Data Type

マルっと纏める方向で現実トウヒ。var-exp な分岐の以下の部分を (var-exp (id) (if (memq id arg) (if (or (null? rslt) (not (memq id rslt))) (append rslt (list id)) rslt) rslt))手続きにしてしまって渡せば良いな、とゆーコトで以下。

EoPL reading (76) 2.2 An Abstraction for Inductive Data Type

差分が少ししかない、という事にてどうしたものか、と。

EoPL reading (75) 2.2 An Abstraction for Inductive Data Type

軽い環境でナニなのは良いのですが、emacs で skk 使えんのはイタ杉。とりあえず、'() を受け付けるようにして、parse を修正する方向で。

EoPL reading (74) 2.2 An Abstraction for Inductive Data Type

今日はばたばたしてて現実トウヒどころではありませんでした。ちょっとストレス溜まってる感満点なので検討着手。

EoPL reading (73) 2.2 An Abstraction for Inductive Data Type

Exercise 2.8 ええと、 Exercise 1.19 の解は何処、と言いつつ検索してみたんですが、どうも EoPL シリーズって最終的に解はこうなりました、な手続き引用をしていない。探してみるに free-vars は以下な模様?

EoPL reading (72) 2.2 An Abstraction for Inductive Data Type

む。lexical-address って (lambda-exp (x y z) (app-exp ((lambda-exp (x y) (app-exp ((var-exp +) (var-exp x) (var-exp y) (var-exp z)))) (var-exp y) (var-exp x))))を吸わせたら (lambda-exp (x y z) (app-exp ((lambda-exp (x y) (app-exp ((free-in…

EoPL reading (71) 2.2 An Abstraction for Inductive Data Type

もっぺん問題を読んで整理 Figure 2.2 な BNF に沿った形で parse と unparse 修正 lexical-address 手続き実装 lex-info とか free-info な variant 使う unparse を lex-info とか free-info を val-exp に置き換えるよう修正 現状、最初のはなんとかなっ…

EoPL reading (70) 2.2 An Abstraction for Inductive Data Type

モチ切れ、と言いつつもう少し。

EoPL reading (69) 2.2 An Abstraction for Inductive Data Type

Exercise 2.7 の実装に着手して unparse-expression 見ながら進めててイヤな記述を発見。

EoPL reading (68) 2.2 An Abstraction for Inductive Data Type

自宅メイン端末が修理に出てて Exercise 1.31 の実装が無い、って思ったら今使ってる端末にディレクトリがある模様。ちょっとラッキー。

EoPL reading (67) 2.2 An Abstraction for Inductive Data Type

むむ。直前エントリに追記した情報は誤りですね。。