(apply-generic op . args)

教育者, 将軍, 栄養士, 心理学者, 親はプログラムする. 軍隊, 学生, 一部の社会はプログラムされる. - 計算機プログラムの構造と解釈 序文

2022-01-01から1年間の記事一覧

SICP 3.4 並列性: 時が本質的

github.com ; ex-3.38 ; Peter: (set! balance (+ balance 10)) ; Paul: (set! balance (- balance 20)) ; Mary: (set! balance (- balance (/ balance 2))) ; ; a. ; Peter->Paul->Mary, 110->90->45 ; Peter->Mary->Paul, 110->55->35 ; Paul->Peter->Mary…

SICP 3.3.5 制約の拡散

github.com 3.34~3.37はスキップします。 これはやらなくても別に困らないというか、もういいかなって。 (define (for-each-except exception procedure list) (define (loop items) (cond ((null? items) 'done) ((eq? (car items) exception) (loop (cdr i…

SICP 3.3.4 ディジタル回路のシミュレーター

う〜ん、今回もまた「最後に完成するまで動かせない」系の奴でちょっとテンション下がってしまった。 入力したいデータ、出力で欲しいデータはわかっている 大枠を作っていく 細かいところは後で作っていく これは良いんだけど、細かい部分が未実装だから動…

SICP 3.3.3 表の表現

github.com 3.3.2の最後のデキューの実装でちょっと燃え尽きた感があったのと、次の「デジタル回路のシミュレーター」が楽しみ過ぎて3.3.2はざっくりとだけ... (define (assoc key records) (cond ((null? records) false) ((equal? key (caar records)) (ca…

SICP 3.3.2 キューの表現

github.com ; 3.3.2 キューの表現 ; 3.3.scmはconsを自前実装しているのでファイルを分ける(dispatchを返して意図したように動かないので) (define (make-queue) (cons '() '())) (define (front-ptr queue) (car queue)) (define (rear-ptr queue) (cdr que…

SICP 3.3.1 可変リスト構造

github.com ; ex-3.12 (define (append x y) (if (null? x) y (cons (car x) (append (cdr x) y)))) (define (append! x y) (set-cdr! (last-pair x) y)) (define (last-pair x) (if (null? (cdr x)) x (last-pair (cdr x)))) ; ; (define x (list 'a 'b)) ;…

SICP 3.2 評価の環境モデル

見にくい...↓こちらで見れる github.com ; ex-3.9 ; ; 再帰版 ; _____________________________________ ; 大域領域 -> | | ; ------------------------------------- ; ↑ ↑ ↑ ; E1→|n:3| E2→|n:2| E3→|n:1| ; (if (= n 1) ; 1 ; (* n (factorial (- n 1))))…

SICP 3.1 代入と局所状態

; 3.1.1 局所状態変数 ; withdraw以外のどこからでもbalanceにアクセス出来る. ; withdrawからだけアクセス出来るようにしたい. (define balance 100) (define (withdraw amount) (if (>= balance amount) ; beginは順次評価していって最後の式を返す ; set!…

SICP 2.5 汎用演算のシステム

問題2.85で意図しない動作に。 修正しようにも1fileで雑に書き進めたので修正厳しいので2.85以降は飛ばすことに。 もうapply-genericええやろ...(疲労) 2週目、又は一旦全部終わったら2.4と2.5をやり直そうと思います。 1周目から完璧を求めると挫折するので…

SICP 2.4 抽象データの多重表現

get,putが出てきてから動かせなくてしんどくなり、apply-genericで混乱したので色々検索。 github.com ここで3.3.3のget,putの実装を載せてくれていたので動かしながら理解することが出来て助かりました。 ; 2.4.1 複素数の表現 (define (add-complex z1 z2)…

SICP 2.3.4 例: Huffman 符号化木

GET A JOB SHA NA NA NA NA NA NA NA NA GET A JOB SHA NA NA NA NA NA NA NA NA WAH YJP YJP YJP YJP YJP YJP YJP YJP YJP SHA BOOM '(1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 …

SICP 2.3.3 例: 集合の表現

やってます #| ; 要素xが集合setの構成要素か? (define (element-of-set? x set) (cond ((null? set) #f) ((equal? x (car set)) #t) (else (element-of-set? x (cdr set))))) ; setにxを追加する (define (adjoin-set x set) (if (element-of-set? x set) s…

SICP 2.2.4 例:図形言語

実際に描画出来ないのでパスした問題が何問か。 gauche-glとかを使えばいけそうな気がしたけど、使い方とか調べてまでこれを描画したいか?と言われるとそうでもなかったのでパスする方向で(テヘペロ SICP2周目とかでやるといいかもしれない。 ; wave ; 線画…

SICP 問題 2.42 エイトクイーンパズル

ex-2.42 エイトクイーンパズルが終わりました(2.43もエイトクイーンパズルだけど). 全く何も見ないで解くのは無理だなーと思ったので、答えを見て動かしながら手続きどの様に動作するのか?を理解するに留めました。 まぁこういうのは「知っているか、知らな…

何度目かのSICP再履修

何回目だろう?SICPやってます。 今回はなんと続いています(笑) ↓今日はここまで進みました。 19日目(p65->p68/p366(18.56%))`2.2.3 公認インターフェイスとしての並び`を読んでいます。問題2.33をやりました。次回は問題2.34からです。無理せず1日1P,1問を…