最近の記事
あぁ^〜永続版スプレー木(persistent splay tree)を実装するのに、二分木のZipperとオプショナルチェーンの相性がよすぎて心がぴょんぴょんするんじゃぁ^〜
スプレー木に限らず二分木の操作を実装すると、参照の付け替えが嵐のように発生する。左の子の参照をあっちに持ってきて、右の子の参照をこっちに持っていく。そういう騒がしいコードの破片があっちこっちに現れる。これは仕方のないことでもある。木の中身を操作するのではなく、木の構造を操作しているのだから、構造の変更(参照の付け替え)が大量発生するのは当然なのだ。当然なのだけど、それにしたって混乱する。 せめて参照の付け替えに自分の直感にそった名前を付けたくなる。今見ている頂点の参照を左の
JavaScript版SICP(計算機プログラムの構造と解釈)のニュートン法の末尾再帰関数を見た目を保ったままスタックセーフにする
JavaScript版SICP(計算機プログラムの構造と解釈)をちょこっと覗いてみた。そしたら最初に出てきた繰り返しの例がニュートン法で、しかも末尾再帰で実装されていた。JavaScriptの前はSchemeが使われていたらしいから、再帰で当然なのかもしれない。それにしたって、「JavaScriptで入門しようねー」という雰囲気なのに、しょっぱなからループが再帰で書かれていたらビビる。とても楽しい。 注釈では、再帰関数で反復を実装する際の効率が気になるなら1.2.1を読んで