PythonでSICP

 なんとなくひさびさに日記をかいてみようと思いました。

 その理由を書いてみます。

 今、SICPの中の「4.4 論理型プログラミング」に書かれている「質問言語」というものをpythonで書いています。
 なぜそんなことをしたかというと、単純にpythonのプログラムが書きたかったから。
 プログラムを書くにあたって題材が必要なので、以前に挑戦したSICPの中からチョイスすることにしました。
 この本のなかで、よく読んでおらず、当然理解もできなかった「4.4 論理型プログラミング」の「質問言語」をこの際だから書いてみて、ついでに演習問題でもやるかとおもったからです。
 (他にも読み飛ばして理解できていないところが多々あります)

 プログラム自体はおおむねできあがって、演習問題に取りかかっていたのですが、問題の4.66でつまづきました。

 なにげなく「SICP 4.64」とぐぐってみる(なぜかキーワードを「SICP 4.66」としませんでした)と、id:rsakamotという方がはてなの日記SICPの問題に取り組んでいる(d:id:rsakamot:20090707)のにヒットしました。

 それを読んでなんとなく日記を書こうという気になりました。

 それにつけても、id:rsakamotさんはすごいですね。まだ大学生なのにSICP読破ですか。しかも3ヶ月。

 僕もそんなふうになりたかった。学生のころはCしか知らなくて、LISPは存在しか知らなかったし、SICPにあるような「関数型プログラミング」なんてまったく知らなかった。はふぅ。

 結局、問題4.66の「2重にカウントしないようにして”sum”のようなものをつくる」方法はわかりませんでした。

 RDBに毒されているので、”SELECT DISTINCT”のようなセレクタ的な概念を組み込むことしか思いつきませんでした。