gm300の日記: scheme
日記 by
gm300
続けている。
バランスしていない2分ソート作る。
ツリー内を探索するのは簡単だが、バランスしていなくても新しい要素を入れるのは結構大変。
どこが大変かというとin-place の変更がいいのか、関数型の処理がいいのかオイラが決めかねている点。
新しい変数の導入は押えてかつ再帰も押えながら書きたい。
と考えつつ、ソート用の2分木を関数型で作るのは無駄っぽい。in-place ということになるとset-cdr/set-carで自分でlist構造を作って行くことになってしまう。別にそうしても、オバケがでてくるわけでも世界が破滅するわけでもないが、レベルが低くて戸惑う。なんか困ったときはset-car/cdr すれば全部なんとかなるだろう! って言われたようなきがする。
()って全部同じなのかどうか分からなくなる。
(if (null? lst) (set-car! lst 0))
ってできない。理由はわかるような気がするが。
set! ってやっぱり新しいcell作るんだ。apply 分かった気がしてしていたが
(apply list 1 (cons 2 '()))
とか見るとまだまだだと思う。っていうか遠い。
バランスしていない2分ソート作る。
ツリー内を探索するのは簡単だが、バランスしていなくても新しい要素を入れるのは結構大変。
どこが大変かというとin-place の変更がいいのか、関数型の処理がいいのかオイラが決めかねている点。
新しい変数の導入は押えてかつ再帰も押えながら書きたい。
と考えつつ、ソート用の2分木を関数型で作るのは無駄っぽい。in-place ということになるとset-cdr/set-carで自分でlist構造を作って行くことになってしまう。別にそうしても、オバケがでてくるわけでも世界が破滅するわけでもないが、レベルが低くて戸惑う。なんか困ったときはset-car/cdr すれば全部なんとかなるだろう! って言われたようなきがする。
()って全部同じなのかどうか分からなくなる。
(if (null? lst) (set-car! lst 0))
ってできない。理由はわかるような気がするが。
set! ってやっぱり新しいcell作るんだ。apply 分かった気がしてしていたが
(apply list 1 (cons 2 '()))
とか見るとまだまだだと思う。っていうか遠い。
scheme More ログイン