scheme
SLLGEN というのは define-datatype と同様で EoPL 独自のソレらしい。以下で取得。 $ wget http://www.cs.indiana.edu/eopl/code/interps/sllgen.scm --2009-10-22 22:58:03-- http://www.cs.indiana.edu/eopl/code/interps/sllgen.scmうーん。とりあえず頑…
Exercise 3.2 ええと問題の意図を微妙にはかりきれてなかったんですが、おそらくは SICP に出てくる normal-order evaluation と applicative-order evaluation の話と見ました。 あれは結果に影響があるケイスもあるはず。 この問題もこの程度で次行きます…
Figure 3.2 を実装してみる。Ex 3.1 は OK ってコトにしといて次に進む。
嫌も応も無く英語が読めんと微妙な世界に突入している模様。 Exercise 3.1 ええと、以下な実装にて
よく考えたら 2.4 でした。で試験も書いたので以下にて。
Exercise 2.26 うーん。難解。Figure 2.5 を参考に手続きを書けば良いのは分かってるんですが。
小出しになってしまってますがご容赦下さい。続きです。 t が var-term 以外のケイスを以下に。 u が var-term の場合、引数を入れ替えて unify-term 呼び出し u が constant-term の場合 t が constant-term で値が同一なら (empty-subst) を戻す u が app-…
昨晩の懇親会開始待ちで検討したナニです。。直前エントリの続きです。スデに呑み屋の中。一人でビール呑みながらノート開いてるさまは微妙にちがいない。
待ち時間で整理してみる事に。 まず unify-term の仕様 (というか実装) から。 t が var-term の場合 u が var-term 又は u に含まれる id に tid が無い場合は unit-subst 手続きに tid と u を渡した結果を戻す 上記の条件に合致しない場合、#f を戻す t …
直前エントリで unify-terms が #f を戻すケイスを列挙してますが、引数リストの cdr がこうなってれば良いのか。ちなみに car は #f を戻さない、というのが基本。
なんとなく目が覚めたので続行。
Exercise 2.25 unify-terms を検討。 ts と us が両方同時に '() なら (empty-subst) を戻す ts あるいは us のどちらかが '() なら #f を戻す 以下。 (test* "(unify-terms '() '())" '(empty-subst-rec) (unify-terms '() '())) (test* "(unify-terms '() …
Exercise 2.25 all-ids ってどっかで見たんだけどな、と思いつつ grep しても出てこなかった。テキストを遡ってみたら 2.10 にあるな。2.2 節はディレクトリ別にしてたので出てこなかったのか。以下なカンジ。 (add-load-path ".") (load "define-datatype")…
Exercise 2.25 よく分からんのう、と言いつつ手続き定義をニラむ。以下、unify-term の一部。 (define unify-term (lambda (t u) (cases term t (var-term (tid) (if (or (var-term? u) (not (memv tid (all-ids u)))) (unit-subst tid u) #f)) (else
昨晩の続き。subst-in-terms です。 ぢつは仕事中、ってか休憩中に map 使えるぢゃん、ってコトに気づく。
とりあえず、鍛錬をこつこつ続ける事に。高等数学きちんとヤッてないので scheme 使って計算云々な役立て方をイメージするのが微妙なんでしょうか。
なんとなく○を書いてみたくなったので色々検討。どんな painter を定義すれば良いか、と言いつつ色々検討。
2.51 の below 盛り込み。 (define (below painter1 painter2) (let ((split-point (make-vect 0.0 0.5)) (right-corner (make-vect 1.0 0.0))) (let ((paint-top (transform-painter painter1 split-point (add-vect ritht-corner split-point) (make-vect …
Exercise 2.49 とりあえず書いてある順で Exercise 2.49 に着手。しかもこれ、ビンゴかダウトかは手続きを作成した時点では確認不可能だったりする。
2.46 および 2.47 をざくっと盛り込み。まず 2.46 から。
何故だか思い出したような取り組み。自分メモですが、テキストはここ。
色々故がございまして、再読。stratifed design なんてのは tcp/ip とか linux kernel とかな例があるようにプログラマが好きなナニ。 この節でもいっちゃんてっぺんの抽象的な部分から切り出していきつつ下の層の実装に向かってて、インターフェースでプロ…
理解が微妙なまま進める、というのも手を動かし辛い。とりあえず昨晩のソレをビンゴと見てつき進むしかないな。
Exercise 2.24 のつづき 直前エントリにて substitution なオブジェクトには置き換え対象の term と置換後の symbol が入ってて、渡された symbol と term の symbol が eqv? だったら置き換える、という理解。 と思ったんですが、逆かな、って思いはじめて…
Exercise 2.24 のつづき 今日の晩メシ担当らしい。作成開始するまでの間で全体見つつ substitution を整理してみる。とりあえず最終的に作成する subst-in-term 手続きはイメージ的には以下なカンジになるのだろうか。 (define subst-in-term (lambda (s t) …
Exercise 2.24 現実トウヒで以下なプロトタイプを作ってみた。
Exercise 2.24 これ、英語を解読する時点で難解。ってか substitution なオブジェクトが何なのかがイメージできてない。BNF から考える必要あり、なのだろうか。
Exercise 2.23 single pair of ribs で実装ときた。これって gosh> (empty-env) () gosh>で、 gosh> (extend-env '(y) '(8) (empty-env)) ((y) . (8)) gosh>で、 gosh> (extend-env '(d x) '(6 7) (exptend-env '(y) '(8) (empty-env))) ((d x y) . (6 7 8))…
Exercise 2.21 検討前に思わず手が動いた。 $ gosh gosh> (cons '(() ()) '()) ((() ())) gosh> これはこれは。しかも問題解いてない (とほほ
Exercise 2.20 用件済んだので次の問題に着手。2.17 ではメッセージパッシングで云々してます。これがいっちゃん楽、っていう固定概念をステないと駄目な気がしますが、とりあえず実装してみます。