2008-08-19から1日間の記事一覧

exercise 3.32 続き

とりあえず、試したコードでも張ってみるか

リズム崩壊

コミケから帰還してからというもの ・ネットサーフィン ・ゲーム ・同人誌眺める ・SICP読み進めるというのを眠くなるまで(正確には寝落ちするまで)やりつづけると、いつの間にか昼夜逆転ですよ。 日が暮れてから目を覚ますとか・・・ どうみても廃人です…

exercise 3.37

解答自体は簡単。注釈の部分が興味深い気がする。 まぁそれはさておきコード晒すか (define (celsius-fahrenheit-converter x) (c+ (c* (c/ (cv 9) (cv 5)) x) (cv 32))) (define (c+ x y) (let ((z (make-connector))) (adder x y z) z)) (define (c* x y) …

exercise 3.36

図をアップするのがめんどいのでパス。 emacsのpicture-modeを試してみるのが良いのかなぁ・・・

exercise 3.35

雛形はできてるし、adderとかの例もあるので簡単かな。 (define (square n) (* n n)) (define (squarer a b) (define (process-new-value) (if (has-value? b) (if (< (get-value b) 0) (error "square less than 0 -- SQUARE" (get-value b)) (set-value! a…

exercise 3.34

multiplierは三つのconnectorのうち二つが確定してれば、もう一つを確定させる。 ということで、 (define (squarer a b) (multiplier a a b)) なんてやると、 bが決まってもaが決まらなくなってしまう。 ちなみにaが決まるとbは決まる gosh> (define a (make…

exercise 3.33

(define (averager a b c) (let ((d (make-connector)) (e (make-connector))) (adder a b d) (multiplier c e d) (constant 2.0 e) 'ok)) こんな感じ。 gosh> (define x (make-connector)) x gosh> (define y (make-connector)) y gosh> (define z (make-co…