Entries from 2007-11-01 to 1 month

今日は調子が良い

困難にぶつかって悩む。間違う。間違う。間違う。解決する。のようなペースで進んでいる。 無駄がない。 間違うのも必要な過程。

global変数を一度参照すると次から参照できなくなるバグ

global変数を一度参照すると次から参照できなくなるバグがあったので調べた。 Gauche の hash-table-get を使うべきところを hash-table-pop! を使ってた。同様に hash-table-push! =>hash-table-put! 。 ドキュメントを斜めよみして使うからこんなことに(…

自転車で多摩川の上流に行ってきた

多摩川サイクリングロードを通って自転車で多摩川の上流の方に行ってきました。 走行距離は往復でだいたい70km〜80km。(迷子になった分も含む) まずはスペックから。 基本的にのび太 運動嫌い 小中学生のころはずっとクラスで走るのが遅いNo.2だった(No.1…

さて

出かけてくる。今日は天気が微妙だな。

Chez Schemeのソースが見たい

見つからない。 論文を読もうとしたら登録&支払いが必要っぽい。

テストを書く - Scheme VM を書く

C-s と同じくらい自然に Unit test を書くとまでは行かないけどテストを書いた。 コンパイラのバグを2つ見つけた。 さて土台は出来た。 最適化を試してみるか。

gca.el

使いまくり。 これは便利。

Firebug can make Gmail slow

新しい Gmail を試していたらこんな親切メッセージが。ここまでチェックしている Gmail 偉いな。 Firebug can make Gmail slow.

Gauche でテスト作成支援 gca.el

昨日、「test* に与えるテスト名の命名が面倒だ」と書いた所、naotoさんから gca.el という koguroさん作の Emacs Lisp を教えていただきました。 これは便利。 gca.el テストケース作成支援のためのツールを作りました(拙作のEmacs用のユーティリティに含め…

デモムービーを見て

他人が Gauche というか Scheme のコードを書いている様子をムービーで見られたのはとても面白かった。 もっと長時間だと更にいろいろ勉強になりそう。誰か達人の方が公開してくれないかな。 例えばどう書く?orgの問題を解くまでのコーディングとかが公開さ…

以前の処理系と比べて速度比較

コアの部分は出来てきたので速度比較をしてみた。 named let もまだサポートしていないので ((lambda (a) (set! a (lambda (i) (if (= i 2000000) i (a (+ i 1))))) (a 0) ) '()) こんなコード。 大体 7倍くらい速くなった。 しかしまだまだ全然 Gauche には…

動いているけど気持ち悪いから追求

コンパイラとVMが連携して外から見ると正しく動いている。 ただ、ある部分のコードを読むとどうして動いているのかまったくの謎。すぐ落ちるはずなのに。 という状態だった。 これが気持ち悪いので深追いしたら、運良く動いているだけでいずれ困ったことにな…

gauche.test の test*

gauche.test の test* を良く使うのだけど。 (test* "closure-body" '(a b) (closure-body c)) 第1引数の name を考えるのが苦痛なので (define-syntax eqt (syntax-rules () ((_ a b) (test* (quote b) a b)))) こういうマクロを作ったら楽に。*1 Gauche 的…

よしっ

コンパイラのバグがなおったぽい。 コンパイラを書きはじめて Scheme コーディング力が急上昇している気がする。

ALFEE 派遣劇

ニコニコ動画(RC2)‐派遣劇 / ALFEE替え歌(vo.初音ミク)これはwww。 原曲を知っているだけに笑える。(が、内容は笑えない)。 三文程度の交通費 セリフ無用のライン工 主役は肥え太る親会社 まとも?なおまけ ニコニコ動画(RC2)‐無言劇 ぐっさんうめぇえ。 …

ナポリ ピザ イル・ルポーネ

中目黒(東横線、日比谷線)ナポリ ピザ イル・ルポーネに行った。 pizza もうまいが、パスタが絶妙アルデンテ&トマトが美味。

世界に一枚しかない名刺

id:ryocotan の手描き。 これをゲットできてやっと半人前。

組込みの手続きをサポートする - Scheme VM を書く

cons, +, number?, pair? などの手続きをサポートしたい。 やることは大まかに2つに分けられる。 各手続きが他の手続きから見えるようにする 名前にマッピングされる手続き本体を記述する ある手続き proc から number? が見えるというのは ;; 外側に free v…

飲み会

取材の後 osdev-j 飲み。 暴露大会で非道いことに。 id:ryocotanと僕があるテーマでお笑いコンビを組んで M-1 に出るべきだとか。 id:nik9さんが某社に潜入してあれだこれだとか。 楽しかった。

取材

Mona のコミュニティに関する取材を受けました。 記事の公開が楽しみです。

Easy Mona Player 0.0.7 リリース

ワンクリックで Mona の音楽プレイヤーが試せるEasyMonaPlayer-0.0.7 for Windowsをリリースしました。 まだα版でとても不安定ですが良かったら、あなたのデスクトップの片隅でお試しください。 ※QEMUというエミュレータが同梱されていて Mona が動作するの…

公園

VM用のコンパイラ - Scheme VM を書く

VM 用のコンパイラは Gauche で動かしていて、コンパイラの出力を C++ で読めるような形にして VM に渡している。 そのうちコンパイラを C++ で書き直さないといけないので面倒だと思っていた。 しかし良く考えればコンパイラをコンパイルしたコードが VM 上…

テストケースを共有したい - Scheme VM を書く

Scheme で書かれた VM と C++ で書かれた VM は全く同じ仕様なのだからテストケースを共有すべき事に気づく。 テストに失敗した場合は、VM のデバッグモードを ON にしてレジスタを見ながらデバッグできるような仕組みもついでに作ってしまおう。テストファ…

昼まで

昼までがんばった。 実装が終わるとほぼ同時に、iPod の電池もなくなった。 これは休めというサインだな。 午後は運動したり、のんびりしたりしよう。 カメラ持って公園行くか。

C++ のマクロで lower_case 的なものはないのかな

C++

#define HOGE(name) class name { int LOWER_CASE(name)##_; } HOGE(Hige); => class Hige { int hige_; }; みたいな。

call/cc - Scheme VM を書く

call/cc を実装。 ヒープベース VM とはちと違う。 conti で stack を丸ごと保存 nuate で stack を戻す return で戻した stack から復帰 という流れ。Scheme 版では以下のようなテストが通るようになった。 (test* "call/cc" 4 (evaluate '(call/cc (lambda…

末尾呼出し - Scheme VM を書く

(let* ([g (lambda (x) x)] [f (lambda (a) (g a))]) (f 2)) f における g の呼出しは末尾呼出し。 g を call する直前にはもはや f の引数はスタックに積まれている必要がなくて、g の引数だけが積まれていれば良い。 これを実現するには g の引数をスタッ…

今日はプールなし

かわりに某腹筋運動をやった。 腹筋が熱い。 お腹がへこみますように。

既視感

またスタックとレジスタをダンプして眺めている自分に気づく。