Entries from 2008-01-01 to 1 month

libc/string, libc/stdio のテスト

libc/string, libc/stdio のテストを配置して自動実行されるようにしました。今のところすべてのテストを通っています。 他のテストもぜひ追加しましょう。→id:shotaro_tsujiさん

軽量let その4 - Scheme VM を書く

昨日 3imp のごく一部を和訳したら方法を思いついた。やっぱり英語を眺めているだけで余計に脳みそ使っているんだな。 整理 let1 a (lambda () b) 問題に関しては解決方法が見えてきた (lambda のコンパイル時に free 変数として locals( =( (a) ) も考慮し…

うげemacs22が消えた

apt-get install migemo すると emacs21が入ってしまうのか。 libgif-dev が怪しい。

Ubuntu Gutsy + Emacs22 の日本語入力

Emacs の日本語入力ってみんなどうしているんだろう。 僕は以下のようにしているのですがインライン入力時のフォントサイズが哀しい感じになってしまいます。 あと uim mode 中に C-h が効かなくなった気がする。 (require 'uim) (uim-mode-on) ;; for Edgy …

Ubuntu 7.10 Gutsy インストール

DELL OPTIPLEX 755 に Ubuntu 7.10 Gutsy をインストールしたときの記録です。 Ubuntu はどんどん品質が良くなっていますね。 パーティション パーティションは手動で以下のように切る。 /boot 100MB EXT3 swap 1GB /home 120GB ReiserFS / 残り残り ReiserF…

strncpy, strncat の不具合修正

id:shotaro_tsujiさんが、テストコードを移植したくれた結果、判明した strncpy, strncat の不具合を修正しました。

3imp を読み直す - Scheme VM を書く

4.7.2 の Direct Function Invocations が微妙に言い回しが難しかかった*1ので全訳(学生nさんと学生mさんに助言を頂きました)。 It is possible to optimize direct function invocations, which usually result from let expressions, to avoid creating …

自由人生活79日間のまとめ

明日から社会人復帰なので、退職してから今日までの79日を振り返る。 背景 もしも仕事を辞めることがあったら試したいことがあった。自分の人生から「仕事」が無くなったときに 自分は何をするのか? 自分は Mona のコードを今までどおりに書き続けるのか? …

軽量 let その3 - Scheme VM を書く

昨日動かなかったコードは動くようになった。 次は let1 の対応を let に展開することだ。理論上はコンパイラを直せば動く事になっているけどそうはいかないのだろうな。念のため新しい版にしておくか。 let 対応 find-free, find-sets の let 対応 let の e…

水野さんお疲れさまでした

はてなを退職いたしました - mizuno_takaakiの日記 これで5人目かあ。 次の勤務先も面白そうですね。お互い頑張りましょうぜ。

この写真好きだなあ

010408 on Flickr - Photo Sharing!

軽量 let その2 - Scheme VM を書く

let1 を ENTER, REFER_LOCAL, LEAVE でコンパイル let1 が tail context にある場合に対応(これは難しかった) local env 用に stack をもう1本持とうかと思ったが踏みとどまった 以前の let1 と比べて約30% ほど速くなった 代入に対応した テストをすべて…

例のバグ再現

例の scheme.ex5 が落ちる件、再現しました。 bug_find.rb で犯人探し中。

X60 の Recovery Disk から Vmware へ

X60 の Recovery Disk から Ubuntu 上の Vmware に Vista をインストールできないかな。 そうすれば Ubuntu メインでありつつも付属してきた Vista を活用出来る。 試してみたけど成功法では reboot を繰り返してしまうな。

ねじまき鳥クロニクル

ねじまき鳥クロニクル全3部読了。以前読んだのは2005年3月か。この本からどれだけ影響を受けたのか読み返してみるまで全く忘れていた。まだ読んでいない人は第1部を買って読んでみると良いと思う。もしあわなくても540円なら安いもの(図書館でも良い)。皆…

軽量 let 問題 - Scheme VM を書く

何が問題か? 最適化が行き詰まっている どこが? inline 展開する手続きに副作用がある場合を考えるとうまくいかなそう より具体的には、let1 を使って展開しないとまずそう しかしその場合、自分の処理系では let1 は手続き呼び出しに変換されるので最適化…

日比谷線に乗ったら試してみよう

日比谷線に乗る。そこでは3種の人々を一瞬で見分けることが可能。六本木で降りるであろう人、銀座で降りるであろう人、秋葉原で降りるであろう人である。

うまくやるコツ

普通の人はスキップするような「どう見ても簡単すぎる例」から手を動かして始めてみる。やれば分かるよ。

秋葉原

さて秋葉原に行ってくるか。

ぐは

MonaのカーネルもSchemeで生成したC言語コードになる気がするので そ、そうですね。きっとこんなのでしょうね。(90-min-sccより) case 0: /* (lambda () (let ((r.5 (%closure (lambda (self.7 k.6 x.1) ... BEGIN_CLOSURE(1,0); END_CLOSURE(1,0); PUSH(L…

ずっと考えているが

ずっと考えているがまだ解答にはたどりつかない。近づいている事は確か。

ぷぷ

pretty-print を書いた。それ以外のコードは一切書いていない。つまり自主休日ということ。

しわしわ

無意識に外に出しているからしわしわにはならない。

with-gensymマクロ

テストのお供にどうぞ。 (define (make-gensym) (let1 i 0 (lambda () (set! i (+ i 1)) (string->symbol (format "G~d" i))))) (define-macro with-gensym (lambda body (let ([org (gensym)] [ret (gensym)]) `(let1 ,org gensym (set! gensym ,(make-gens…

pp

pp って pretty printの略か今更気づいたよ。

inline展開 - Scheme VM を書く

inline 展開を軽く実装してみたが難所が多そう。ベースの仕組みは難しくない。手続き呼び出し部分を手続き本体に置き換えるだけ。 手続き定義 (define hoge (lambda ...)) を見つけたら hoge => (lambda ...) の対応を env に保存しておく。その際に手続きを…

新年明けましておめでとうございます

今年もよろしくお願いします。 さてコード書くぞ。

ん?

http://del.icio.us/ (トップ)からこの日記に来る人がいるな。前からあった?何だろう。

あぶないあぶない

inline 展開じゃない間違ったものを世に出しそうになった。別に間違うことは恥ずかしいことではないが、出す前に気付いて良かった。