2006-12-01から1ヶ月間の記事一覧
キューを作ります。Θ(1)にするためにデータをためるリスト本体と、その前端(front-ptr)と後端(rear-ptr)を保持するpairがデータ構造になります。 が、しかしここでの実装は 空っぽの場合、というのを front-ptr が nilを指してる場合、としています。空の状…
再帰を無名関数で行う法。 要するに引数の一つに自分への参照にしちゃう訳ですね。最小二乗法の検算にlisp使ってて、リストの長さを出す関数をふとワンライナー的に書きたくなって理解してしまった・・・(間抜けな動機。length使えば良いじゃんねえ・・・) …
mutation版のconsをprocedureとして再定義。 assignment というかset! があれば理論的にはmutable-data-objectが作れることを見せてます(当たり前な気が・・・いまいち理解できてないみたい)。
「同じ」ということの定義。schemeのeq?は単純明快で、ポインタが同じアドレス(実体)を指している物は同じ、、、というコンピュータ的には非常に素直な実装になっています(ポインタ恐怖症の人からしたらいやな表現なんだろうか?)。 (define x (list 'a …
昨日は鎌倉のM電機に出張。遠い。。。 新幹線の中って本読むのに微妙な環境です。
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 などの仕組みが全て見えて感動でした。
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; } うーむ…