(apply-generic op . args)

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

SICP

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 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問を…

計算機プログラムの構造と解釈(SICP) 勉強メモ6

今日は気分があまり乗らないので、ここでSICPはSTOPして違うことしようかな。 問題1.7から1.1.8まで。 ;問題1.7 ;小さい数は ;(sqrt 0) => 0.03125 ;0の平方根は0だが、ここでは0.03125が返ってくる。 ; ;大きい数は ;(sqrt 9999999999999999999999999999999…

計算機プログラムの構造と解釈(SICP) 勉強メモ5

2週間ほど急がしくて勉強が出来なかった。 今日から再開。 とりあえず、前回勉強した分をUPしてなかったのでUP. 問題1.6だけ。 問題1.7で悩んでる。 ;問題1.6 (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else…

計算機プログラムの構造と解釈(SICP) 勉強メモ4

"関数型言語の関数は数学の関数と同じだ!!!" くらいのことを言われ(書かれ)ていたので、数学の関数とプログラミングの手続きの間の重要な違い、というのには目から鱗だった。 ;;1.1.7 Newton法による平方根 ;これまでに紹介した手続きは、通常の数学の…

計算機プログラムの構造と解釈(SICP) 勉強メモ3

今日はなんか朝4時に目が覚めてしまったので、SICPのお勉強。 問題1.1~1.5までやりました。 ;問題1.1 ;式の列がある。それぞれの式で解釈系が印字する結果は何か。列は示した順に評価する物とする。 ;$gosh で確認。oは正解。xは不正解。 ;10 =>10 o ; ;(+ 5…

計算機プログラムの構造と解釈(SICP) 勉強メモ2

今日は2P進んだ。 condはカッコッカが多くなるから”大失敗”らしい。 ;;1.1.6 条件式と述語 ;Lispには場合を分け(case analysis)を記述するための特殊形式がある。それをcond(conditional(条件付き)意味する)といい、次のように使う。 ; ;(define (abs x) ; …

計算機プログラムの構造と解釈(SICP) 勉強メモ

普段からしている勉強内容をブログに貼り付けてみようと思った。 3日分。 9Pまで。 ;\r => now file load REPL ;;;1.手続きによる抽象の構築 ; 計算プロセス(computational process)とは計算機の中に住む抽象的な存在である。 ;データとは(data)もう一つの抽…