2007-05-27から1日間の記事一覧

SICPを読む(8) 1.1.8 ブラックボックス抽象としての手続き。

要するに、隠蔽って事だね。Javaでいう所の、privateで定義しよう!みたいなお話し。 ところで、expってなんだっけ? 気になる1文がある。 (define (square x) (* x x)) (square 2) ; 4 2の2乗は4だ。そこまではわかる。問題は次だ。 (define (square x) (exp …

SICPを読む(7) 問題 1.6 - 1.8

vimが落ちたので、1.6 1.7のソースは略。 問題 1.6 無限ループ。ifが特殊形式の意味がわかってきた。無限ループに入ると、vimごとkillしなければならない・・・この先不安。 問題 1.7 1.7の解答は古い値と新しい値を比べる方式。僕のは有効桁数を(/ guess 10…

SICPを読む(6) 1.1.7 いきなり微分。

ぐはぁ、早速数学が飛び出した。僕、数学苦手です・・・。 Newton法による平方根 まず、平方根の求め方を調べる。 ニュートン法 - Wikipedia ニュートン法による平方根の計算 わかりやすいスライド。 いきなり微分。でも、簡単そうなので、頑張って展開した…

SICPを読む(10) 問題1.9 - 1.10 指数的爆発

問題1.9 紙の上で展開した。散々悩んだので、あっさり解けた。 問題1.10 数学的帰納の問題。プログラムを見て、数学的定義を述べよ。 (define (A x y) (cond ((= y 0) 0) ((= x 0) (* 2 y)) ((= y 1) 2) (else (A (- x 1) (A x (- y 1)))))) xに大きな値を取…

SICPを読む(5) 開発環境について。

そういえば開発環境を書いていなかった。OSはFedora6。エディタはvim。 vim7+MzScheme メイン環境。 コンパイル時に「./configure --enable-mzschemeinterp --with-plthome=/usr/lib/plt」が必要。 Vim7ではMzSchemeが使えるよ | 東京嫉妬 - 括弧の中を評価…

SICPを読む(9) 1.2.1 再帰と反復

再帰的プロセスと反復的プロセスの違いが判らなかったが、なんとなく掴めるようになった。Karetta|Gaucheプログラミング|すべて再帰である注目すべきは、*の位置。*があるとどんどん右へ伸びていってしまう!!(fact-iter ...)では、自分で自分を呼び出してい…