Entries from 2007-11-01 to 1 month
困難にぶつかって悩む。間違う。間違う。間違う。解決する。のようなペースで進んでいる。 無駄がない。 間違うのも必要な過程。
global変数を一度参照すると次から参照できなくなるバグがあったので調べた。 Gauche の hash-table-get を使うべきところを hash-table-pop! を使ってた。同様に hash-table-push! =>hash-table-put! 。 ドキュメントを斜めよみして使うからこんなことに(…
多摩川サイクリングロードを通って自転車で多摩川の上流の方に行ってきました。 走行距離は往復でだいたい70km〜80km。(迷子になった分も含む) まずはスペックから。 基本的にのび太 運動嫌い 小中学生のころはずっとクラスで走るのが遅いNo.2だった(No.1…
出かけてくる。今日は天気が微妙だな。
見つからない。 論文を読もうとしたら登録&支払いが必要っぽい。
C-s と同じくらい自然に Unit test を書くとまでは行かないけどテストを書いた。 コンパイラのバグを2つ見つけた。 さて土台は出来た。 最適化を試してみるか。
使いまくり。 これは便利。
新しい Gmail を試していたらこんな親切メッセージが。ここまでチェックしている Gmail 偉いな。 Firebug can make Gmail slow.
昨日、「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* を良く使うのだけど。 (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 コーディング力が急上昇している気がする。
ニコニコ動画(RC2)‐派遣劇 / ALFEE替え歌(vo.初音ミク)これはwww。 原曲を知っているだけに笑える。(が、内容は笑えない)。 三文程度の交通費 セリフ無用のライン工 主役は肥え太る親会社 まとも?なおまけ ニコニコ動画(RC2)‐無言劇 ぐっさんうめぇえ。 …
中目黒(東横線、日比谷線)ナポリ ピザ イル・ルポーネに行った。 pizza もうまいが、パスタが絶妙アルデンテ&トマトが美味。
id:ryocotan の手描き。 これをゲットできてやっと半人前。
cons, +, number?, pair? などの手続きをサポートしたい。 やることは大まかに2つに分けられる。 各手続きが他の手続きから見えるようにする 名前にマッピングされる手続き本体を記述する ある手続き proc から number? が見えるというのは ;; 外側に free v…
取材の後 osdev-j 飲み。 暴露大会で非道いことに。 id:ryocotanと僕があるテーマでお笑いコンビを組んで M-1 に出るべきだとか。 id:nik9さんが某社に潜入してあれだこれだとか。 楽しかった。
Mona のコミュニティに関する取材を受けました。 記事の公開が楽しみです。
ワンクリックで Mona の音楽プレイヤーが試せるEasyMonaPlayer-0.0.7 for Windowsをリリースしました。 まだα版でとても不安定ですが良かったら、あなたのデスクトップの片隅でお試しください。 ※QEMUというエミュレータが同梱されていて Mona が動作するの…
VM 用のコンパイラは Gauche で動かしていて、コンパイラの出力を C++ で読めるような形にして VM に渡している。 そのうちコンパイラを C++ で書き直さないといけないので面倒だと思っていた。 しかし良く考えればコンパイラをコンパイルしたコードが VM 上…
Scheme で書かれた VM と C++ で書かれた VM は全く同じ仕様なのだからテストケースを共有すべき事に気づく。 テストに失敗した場合は、VM のデバッグモードを ON にしてレジスタを見ながらデバッグできるような仕組みもついでに作ってしまおう。テストファ…
昼までがんばった。 実装が終わるとほぼ同時に、iPod の電池もなくなった。 これは休めというサインだな。 午後は運動したり、のんびりしたりしよう。 カメラ持って公園行くか。
#define HOGE(name) class name { int LOWER_CASE(name)##_; } HOGE(Hige); => class Hige { int hige_; }; みたいな。
call/cc を実装。 ヒープベース VM とはちと違う。 conti で stack を丸ごと保存 nuate で stack を戻す return で戻した stack から復帰 という流れ。Scheme 版では以下のようなテストが通るようになった。 (test* "call/cc" 4 (evaluate '(call/cc (lambda…
(let* ([g (lambda (x) x)] [f (lambda (a) (g a))]) (f 2)) f における g の呼出しは末尾呼出し。 g を call する直前にはもはや f の引数はスタックに積まれている必要がなくて、g の引数だけが積まれていれば良い。 これを実現するには g の引数をスタッ…
かわりに某腹筋運動をやった。 腹筋が熱い。 お腹がへこみますように。
またスタックとレジスタをダンプして眺めている自分に気づく。