EoPL
うーん、迷走気味。現時点にて parse な試験で問題発生中。
色々見てみるに、define-datatype の定義とかって全然関係なくって、ただのナチュラル君の大暴れな事が判明しつつあります。 しかも最初は構文木って 2 分木じゃないと駄目なの? って思ったら、それさえもナチュラルである事が判明しつつあります。やれやれ。
現実トウヒの成果を以下に。
引き続き、parse とか unparse とかをナニ。とりあえず試験書いた。
define-datatype って強力。On Lisp にあるボトムアップデザイン? それにしても BNF から直感的に書けてる、というのはなかなか凄い。 とりあえず occurs-free? の試験の続きを書きます。
2.2.2 節突入。例示されているソレ達を順に色々確認。
On Lisp の日本語訳の最初らへんを見ててやっぱ直そ、と思い修正検討着手。
Exercise 2.5 短時間な現実トウヒの中で、以下なナニがでっち上がりました。
Exercise 2.4 ええと、以下な試験で bintree 確認。
昨晩何もデキんかった鬱憤がタマりまくっております。ばたばたしてる中での机上の現実トウヒなソレを以下に。
昨晩のヤリ残しな試験を書いた。以下な部分。 (and (pair? variant) (memq (car variant) (car type-info)) #t)試験は以下。 (test* "argument is not pair" #f (bintree? 1)) (test* "car of argument is not 'leaf-node and 'interior-node" #f (bintree? …
述語な手続きを確認。
ええと、Variant-name な手続きが error になるケイスの試験を書いてみます。
見出しが長い。そりゃ良いんですが、 (define tree-a (interior-node 'a (leaf-node 2) (leaf-node 3)))で tree-a に (interior-node 'a (leaf-node 2) (leaf-node 3))がセットされてる件について手続き定義を確認。
UT 大事ですが、パラで EoPL なナニも進める方向で。 # 休みなんでこっち方面に稼動がなかなか向けれない
とりあえず define-datatype 手続きからかな、と思い define-syntax なナニを確認してます。
以下の 2 行を追加してテストな手続きを動かしてみる事に。 (define eopl:error error) (define define-datatype:pretty-print print)で、gosh 起動して以下。 $ gosh gosh> (add-load-path ".") ("." "/usr/share/gauche/site/lib" "/usr/share/gauche/0.8.…
http://www.cs.indiana.edu/eopl/code/interps/define-datatype.scm 確認してみる方向。
何故だ、と言ってるだけなのも微妙なので色々確認。まず引数の値ベースで確認。これは基数が 2 と 16 で見てみます。
Exercise.2-1 fact も実装。 (define (fact n) (if (iszero? (pred n)) (succ zero) (mul n (fact (pred n)))))これでようやく設問の確認ができる、という事で確認。
全然読んでないのがバレバレですね。bigits という記述もありました。とりあえずリトライ。
昨晩の続き Exercise.2-1 昨晩エントリのラストにて実装を引用してますが正しくは以下? (define mul (lambda (x y) (let f ((R0 x) (Acc y) (rslt zero)) (cond ((null? Acc) rslt) ((car Acc) (f (cons #f R0) (cdr Acc) (plus R0 rslt))) (else (f (cons #…
Exercise.2-1 うーん。bigits って何だろ、ググッても微妙なナニしか出てこなかったんですが Method for data compression という所にて以下な記述があった。 "BIGIT" A place holder in the binary number system. For example, a byte is a binary number …
Exercise.1-32 帰宅中に map 使えるんじゃね?、とゆーコトに気づきかけましたがそんな単純な話では無さげ、という事に帰宅後気づく。 でも (if (eqv? (car l) ':) (let f ((d 0) (dict dict)) (cond ((null? dict) (cont #f)) ((eq? (cadr l) d) (let f-inne…
Exercise.1-32 (test* "(un-lexical-address '(lambda (a) (: 0 1))) should return #f" #f (un-lexical-address '(lambda (a) (: 0 1))))な試験を書いて make してみたらパスしない。とりあえず call/cc 使うべ、と言いつつ手続きに盛り込んだのですがそれ…
Exercise.1-32 なんとなく Ex.1-31 の逆で良いカンジをイメージしてるんですがどうなる事やら。
何が悪かったのかが判明したので軽くメモを。
Exercise.1-31 今日、海に遊びに行く道すがら、データ構造が微妙なんだろな、と思ってる中、単純に ((c) (a b c))みたいなリスト持ってりゃ良いんじゃね? という事に気づく。lambda 式が出てきたらリスト更新で、symbol だったら上記の辞書みたいなのを探索…
Exercise.1-31 対象は BNF に書いてある通り。変数名とレキシカルなアドレスのナニなリストを持ち回れば良いのでしょうか。あー、結果も必要ですね。 ざっくり以下なカンジ? (define (lexical-address exp) (define (lexical-address-inner rslt argl l) (if…
Exercise.1-26 そういえば、出社途中に試験が足りてないかも、な事に思い至る。