EoPL
日を跨いだのでエントリを分けます。煮つまったので氷を買うついでに散歩。散歩しつつ、app-term なナニは分けちゃえ、な思いつきを基に以下がでっち上がりました。
もう 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…
eta-conversion な検討。なんとなく試験から書いてみる。
beta-reduction の検討着手。
PTaL 読まねば、と言いつつ途中で切り上げて alpha-conversion をヤッツケるべく、こちらに再度着手。
微妙な検討が続いています。未だもって腑にオチてなかったりして。
ええと、色々な意味で理解が微妙なので occurs-free? な試験から再度検討し直す事にしました。
ええと、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…
よく見たらバグってない? 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…
現時点での試験、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>…
以下の式を beta-reduction に吸わせた場合、ループする事が判明。 ((lambda (x) ((lambda (y) (+ x y)) x)) y)そりゃ、そのまんまお互い (beta-reduction と substitute) で同じモノ渡しやっこしてるんだから当たり前っちゃ当たり前か。
なんとなくストレスフルな今日この頃。なかなか昼間に検討時間が取れぬ、と言いつつ現実トウヒし放題だったりするんですが、現時点での実装が以下です。
Exercise 2.12 ええと昨晩遅くに残したメモを見つつ * 一つだったよな、と言いつつ以下がでっち上がった。さほど時間かかってません。
Exercise 2.12 とりあえず alpha conversion な試験を書いてみる。
alpha conversion とか beta reduction とか eta conversion とか。wikipedia 見ても若干意味不明。 例示されているものとしては ((lambda (f) (f 3)) (lambda (x) (+ x 2)))と ((lambda (x) (+ x 2)) 3)と (+ 3 2)は同じ、とある。上記はbeta reduction の…
検討再開。とりあえず 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))…
天気は良いのですが波が高いはずなので外に遊びに行く気にならない。買い物してきて帰宅後に検討着手。 Exercise 2.11 expression を以下に修正。 (add-load-path ".") (load "define-datatype") (define-datatype expression expression? (var-exp (id symb…
lisp と将棋エンジンに取り組んでいるヒトの記事を見た。具体的なアウトプットって良いなぁ。 Exercise 2.10 とりあえず以下をでっち上げてみました。 (add-load-path ".") (load "define-datatype") (define all-ids (lambda (exp) (cases expression exp (…
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…
マルっと纏める方向で現実トウヒ。var-exp な分岐の以下の部分を (var-exp (id) (if (memq id arg) (if (or (null? rslt) (not (memq id rslt))) (append rslt (list id)) rslt) rslt))手続きにしてしまって渡せば良いな、とゆーコトで以下。
差分が少ししかない、という事にてどうしたものか、と。
軽い環境でナニなのは良いのですが、emacs で skk 使えんのはイタ杉。とりあえず、'() を受け付けるようにして、parse を修正する方向で。
今日はばたばたしてて現実トウヒどころではありませんでした。ちょっとストレス溜まってる感満点なので検討着手。
Exercise 2.8 ええと、 Exercise 1.19 の解は何処、と言いつつ検索してみたんですが、どうも EoPL シリーズって最終的に解はこうなりました、な手続き引用をしていない。探してみるに free-vars は以下な模様?
む。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…
もっぺん問題を読んで整理 Figure 2.2 な BNF に沿った形で parse と unparse 修正 lexical-address 手続き実装 lex-info とか free-info な variant 使う unparse を lex-info とか free-info を val-exp に置き換えるよう修正 現状、最初のはなんとかなっ…
モチ切れ、と言いつつもう少し。
Exercise 2.7 の実装に着手して unparse-expression 見ながら進めててイヤな記述を発見。
自宅メイン端末が修理に出てて Exercise 1.31 の実装が無い、って思ったら今使ってる端末にディレクトリがある模様。ちょっとラッキー。
むむ。直前エントリに追記した情報は誤りですね。。