sicp

Ex.2.32

うーん。これは単に難しく考え過ぎじゃないかな。 http://d.hatena.ne.jp/yukichanko/20091011/1255280942 #というかerlang liteを支える立役者が弱者とか軽々しく言っちゃいけませぬっ。ある集合Aのベキ集合をPとすると、Aにある1要素αを足した集合 A'のベ…

Ex. 1.23

http://d.hatena.ne.jp/yukichanko/20090827/1251388975 不思議。 確かに runtime 実行オーバーヘッド分 t とnext-*を呼ぶ分がプラスされてしまうのは当然なんだけど、そんなん誤差だろうし。 (let ((s (runtime))) (- (runtime) s)) とりあえず、profileを…

Ex. 1.19

あ、確かに。 http://d.hatena.ne.jp/yukichanko/20090823/1251036936 そういえばこの辺り面倒くさくなって説明すっ飛ばした記憶があるなあとか思い出した。 このやり方なかなか巧妙で、変換を続けて行っても常に同じ形式になるように上手く項を調整していて…

Representing Queues (pp.261-265)

キューを作ります。Θ(1)にするためにデータをためるリスト本体と、その前端(front-ptr)と後端(rear-ptr)を保持するpairがデータ構造になります。 が、しかしここでの実装は 空っぽの場合、というのを front-ptr が nilを指してる場合、としています。空の状…

Mutation is just assignment (pp.260-261)

mutation版のconsをprocedureとして再定義。 assignment というかset! があれば理論的にはmutable-data-objectが作れることを見せてます(当たり前な気が・・・いまいち理解できてないみたい)。

Sharing and identity (pp.257-260)

「同じ」ということの定義。schemeのeq?は単純明快で、ポインタが同じアドレス(実体)を指している物は同じ、、、というコンピュータ的には非常に素直な実装になっています(ポインタ恐怖症の人からしたらいやな表現なんだろうか?)。 (define x (list 'a …

3.3.1 Mutable List Structure (pp.252 - 256)

set-car!, set-cdr!の登場。cons cellのcar/cdrを直接書き換えるmutatorですね。*1 実は以前 scale-listあたりで、iterative と recursiveでできあがりのリストの順序のやりやすさをで悩んで、以下のようなことをしていた…ら、実はここのexerciseの内容先取…

復活

します... そのうち復習で抜けた所も書こうかと思ってますが、ダメかも.... 昨日は、1.1.5 の substitution model から 3.2 のenvironment modelへの移行で、結構謎だった local variable, local state, inner-function などの仕組みが全て見えて感動でした。

1.2.3 Orders of Growth

Θ記法ですな。大抵みんな知ってるだろうし、大学で嫌という程やったので割愛。

Example: Counting change pp 40-42

前回のTree型の再帰パターン、というか再帰で書かないとわけわからん!という例を解く。 ここでの例題は決められた通貨単位で指定された金額を払うための方法が何通りあるか、というもの。 確かに再帰で考えていくと結構簡単。今注目してる通貨(例えば500円…

例題環境

なんせ楽なのでついつい例題プログラムを作るとき、Emacsのlisp interactionでやってしまう。defunとdefine , cond のelse節 , 高階関数が使えない(のか?)など結構違いがあるので、使えるのは限られてるのですが。変なクセが付きそう。

1.2.2 Tree Recursion

線形の次はツリー型再帰だ。例題は良くあるフィボナッチ数の問題。素直に再帰で書くと各再帰深さにて2つのパラメータが未定(要再帰呼び出し)になったツリー状の演算グラフができる。これ、すごい数の無駄演算を行ってしまうが、簡単に書けて理解しやすい…

1.2 Procedure and the Process They generate

ここまではlanguage features、というか道具の仕組についての解説中心だったが、ここからは道具の使い方、パターンの説明にいよいよ入っていくようです。別段Lispを教えたい本ではなく、複雑な問題を切り分ける術、というのを教えたい本なんだそうなので、こ…

何を勘違いしたのか最近読み始めてしまったSICP。周りにも読んでる人がやたら多い。 現在 1.2 Procedure and the Process They generate. p.31- ちょこちょこ書いていこう