re2cで字句解析(fillについて)

今までだいたい手書きでスキャナを書いてたんだけど、re2cというスキャナ生成ツールがあって、flexや手書きよりも高速なスキャナが生成できるという話なので試してみた。

Read more »

プログラムを書くプログラム(を書く…)

Schemeコンパイラで、ある種の継続をsetjmpに置き換える

3impの4.7節「できそうな改善」の4.7.5項「継続をその場ジャンプにする」という項目を実装した。これはスコープ内での変数の使われ方を調べられれば、結構簡単に実装できる。

Read more »

Schemeコンパイラで、末尾再帰のクロージャをループに変更する

考えていた、Schemeで末尾再帰のコードをループに変更する方法を実装した。考えとしてはシンプルだけど、実装するには大きな変更が必要で、174コミット、15日も費やしてようやく実装できた(まだバグがあるかもしれないけど…)。やったことをメモしておきたいと思う。

Read more »

3impメモ

Schemeのコンパイラで効率のいいループの実現方法、そして3impとの決別

3impを参考に作っている自作のLispコンパイラで効率のいいループの実現方法を考えてたんだけど、どうもインチキ感が拭えない。と思っていたところ、4.7節「できそうな改善」の4.7.3項「末尾再帰最適化」に、方法は書いてないけど案としては書いてあった(ここの「末尾再帰最適化」というのは末尾呼び出し最適化でスタックを消費しない、というのとは違くて、再帰というところがポイントになっている。)

Read more »

Schemeでの効率のいいループの方法を考える

Schemeはご承知の通りループの構文がなくて、末尾再帰でループを実現する。

Read more »

Ruby on Railsを再び学ぶ

昔に勉強したけど、その後全然使ってないのでさっぱり忘れたのでまたやり直し。ちょっとまともなウェブアプリを作ってみたい。

Read more »