SICP

計算機プログラムの構造と解釈[19]

およそ10日ぶりかな. 今日から再開. SICP の書籍版や info 版, また, Web 上にある答えを見ながらやってく. 2.1.4 lower bound と upper bound という2つの端点を持つ「区間」と呼ばれる抽象オブジェクトが存在. (define (add-interval x y) (make-interval …

計算機プログラムの構造と解釈[18]

うーん. ペースが落ちてるせいか? まるで問題が分からん. 2.1.3 2.6 まず, 0 と 1 を足す操作の実装. (define zero (lambda (f) (lambda (x) x))) (define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x))))) これから, one と two を定義しろとのこと. …

計算機プログラムの構造と解釈[17]

何故か毎回毎回 utf-8 で書いたプログラムを保存しているはずなのに, SJIS になってて日本語が文字化けしている. なんでだろう? よくわからない. 他のファイルは, ちゃんと utf-8 で保存されてるのに. 2.1.3 問題 2.5 うーん. 問題の意味がよくわからん. 答…

計算機プログラムの構造と解釈[16]

一日, ノルマとして, 最低問題1問は解くようにしよう. ノルマを決めとかないとグダグダになりかねない. 今のところ, 1問ならできないことは無いだろうし. たぶん. 2.1.3 問題 2.4 まず, (car (cons x y)) が x を生じることを証明. (define (cons x y) (lamb…

計算機プログラムの構造と解釈[15]

今日は, やり残しの問題を片付けておわり. 2.1.2 問題 2.3 問題は, 4つか. 平面上における長方形の表現を実装. その長方形の周囲の長さと面積を計算する手続きの作成. それができたら異なる表現で実装. その長方形の周囲の長さと面積を計算する手続きの作成.…

計算機プログラムの構造と解釈[14]

sicp.info 導入 nanasi さんに SICP が info 形式で配布されているとの情報を貰ったので, さっそく導入してみた. neilvandyke.org - SICP in Texinfo Format http://www.neilvandyke.org/sicp-texi/ まあ, 当然内容は, 英語だけど, 買うと 5000 円以上する本…

計算機プログラムの構造と解釈[13]

今日から2章. 2.1 まず準備 (define (add-rat x y) (make-rat (+ (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y)))) (define (sub-rat x y) (make-rat (- (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom…

計算機プログラムの構造と解釈[12]

今日で1章も終わり. あいかわらずペースは, ゆっくり. 1.3.4 値として返される手続き. lambda とか. 問題 1.40 うん? こんなんでどうだい. (define (cubic a b c) (lambda (x) (+ (cube x) (* a (square x)) (* b (square x)) c))) 例えば, x^3 + 1 ならば,…

計算機プログラムの構造と解釈[11]

develock.el を使って, プログラム書いてる. これは, scheme-mode でも有効になる. ←おおいなる間違い. 色付けは, quack によるものやった. develock 関係なしだった. それで, 最近気付いたのだけれど, セミコロン3つで行を始めると, その行に色がつく. これ…

計算機プログラムの構造と解釈[10]

今日は, かなり少なめで問題, 1つ解いて終わり. それでもやらないよりは・・・. 1.3.2 何故かここらへんは, よく覚えてる. 問題 1.34 問題は, 次のとおり. (define (f g) (g 2)) こんな関数があって, これを評価するとこんなかんじになる. > (f square) 4 > …

計算機プログラムの構造と解釈[9]

なんか2日に1度になりつつある・・・. 1.3 p.33 に載ってた pi を計算する式を実行してみたけど, あんま精度よくねえ. これでもこんなもん. gosh> (* 8 (pi-sum 1 10000000)) 3.141592453589793 ちなみにこれを実行したら, 一瞬では答え出なかったね. 計算に…

計算機プログラムの構造と解釈[8]

この前, スパッときりあげてよかった. 眠けでふらふらしながら考えててよく分かんなかった 1.25 が簡単に理解できた. 1.2.6 1.26 が長くなってるなあ. 問題 1.25 ;; 元のもの. (define (expmod base exp m) (cond ((= exp 0) 1) ((even? exp) (remainder (sq…

計算機プログラムの構造と解釈[7]

まいった. 全然進まん. 始めるの遅すぎ. 1.2.6 素数性のテスト 昨日のつづき. 問題も 1.23 とかから繋がってるのっぽいね. 問題 1.24 まず, ソースコードを簡単に修正. まあほとんど昨日のをそのまま使用. ;; time-prime-test. (define (runtime) (use srfi-…

計算機プログラムの構造と解釈[6]

2日に1度にはしたくないなあ. 毎日少しづつでも進めないと. 1.2.6 例: 素数性のテスト Gauche だと random 関数が無いと怒られた. ググッてみると, ここに解決法が書いてあった. gosh> (use srfi-27) gosh> (define random random-integer) こうすれば OK だ…

計算機プログラムの構造と解釈[5]

1日空いちゃったね. 気をとりなおして再開. 1.2.4 べき乗 問題 1.16 fast-expt の反復的プロセス版を作成せよ, ってね. ちなみに, 元の再帰的プロセス版は, こんなの. (define (square x) (* x x)) (define (even? n) (= (remainder n 2) 0)) (define (fast-…

計算機プログラムの構造と解釈[4]

nanasi さんに紹介してもらった, GaUnit 入れた. 最初は, 使用法?だったけど, チュートリアルやってみて少し理解できた. これは, かなり便利そうだ. 面白い. テストケースを全て満たした = 完成って感じやね. こういうの入れたりして, Emacs で Scheme の環…

計算機プログラムの構造と解釈[3]

今日は, あんまり進められなかったなあ. 昼間に読みゃーいいのに. 1.2 手続きとその生成するプロセス 再帰的プロセス 反復的プロセス 問題 1.9 まず上のやつ. これは, 横に太っていってる. 再帰的プロセス. (+ 4 5) (inc (+ (dec 4) 5)) (inc (inc (+ (dec 3…

計算機プログラムの構造と解釈[2]

手続きによる抽象の構築. 問題 1.7 小さい数の問題点 予測値の2乗と x の差が, 0.01 よりも小さくなった時点でループが終了するので, 0.01 より小さい数に対して効果的でない. 大きい数の問題点 これが良くわからんかった. あまりに大きい数だと, 0.01 とか…

計算機プログラムの構造と解釈[1]

今日から仕切り直し. 問題は基本的に全部やる. 問題の答えは, 出来る限りみないようにしよう. 1日で 1.1 全部終わらそうとか, そういうのは考えない. 時間をかけてやる. 読んで問題解くのに, 1日, 1時間から2時間ぐらい時間をとる. こんな感じで行こうかな. …

SICP メモ[1.3] 高階手続きによる抽象

高階手続き 手続きを扱う手続き. 手続きを引数として取り, 手続きを値として返す手続きを構成など. 引数としての手続き 手続きを引数としてとる関数. 関数を引数として指定する. めちゃくちゃつまんない例だけど, こういうものかな. (define (arg-5 func arg…

SICP メモ

A4版を小さな字でめいっぱい使ってるから, ページ数以上に量が多い. これは大変だ. 今日は, 1.3 マデ. つーかもう既に挫折しそう. 問題飛ばして読むことのみに徹するとか考えないと読めないぞ, これは. 線形再帰と反復にある階乗を求めるプログラムを gosh …