2006-12-01から1ヶ月間の記事一覧

Representing Queues (pp.261-265)

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

Y-combinator を理解

再帰を無名関数で行う法。 要するに引数の一つに自分への参照にしちゃう訳ですね。最小二乗法の検算にlisp使ってて、リストの長さを出す関数をふとワンライナー的に書きたくなって理解してしまった・・・(間抜けな動機。length使えば良いじゃんねえ・・・) …

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 …

昨日は鎌倉のM電機に出張。遠い。。。 新幹線の中って本読むのに微妙な環境です。

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 などの仕組みが全て見えて感動でした。

bit数え上げ2

d:id:tkuro:20061129 しつこく食い下がるような問題でもないんだけど、、、 x & (x-1) が 一番右の1のビットをカットすることを利用して、 int enum_bit(unsigned long x) { int counter = 0; while( x ) { counter++; x &= x-1; } return counter; } うーむ…