Entries from 2006-07-01 to 1 month

アメリカのエレベータ

アメリカのエレベータは我が家より広いらしい。

file_server の write

やっと write が動いた。テストもばっちり通ったよ。 これで残りの作業は メモリリーク最終チェック 圧縮系の read に対応 今日はインタプリタのコードはかけなさそう。

動的束縛・静的束縛

dev-jでいろいろ盛り上がる。 今更だけどPerlで localが動的束縛、myが静的束縛とか。 そういうのが深く脳に染み渡った感じ。 手続きがファーストクラスオブジェクトとして扱える場合、無名関数をほいほい渡すと動的・静的の違いが分かりやすいよなぁ。

Schemeでカーネル?

またまたdev-jで盛り上がった。 通常カーネルはC言語+アセンブラで書くのが一般的なんですが。 MonaはC++で書いています。更にこれをすすめてScheme(インラインアセンブラやC関数のcallとかの拡張)+少量のアセンブラでカーネルかけそうだよねみたいな。 C++…

東京ドーム

負けました。新庄選手はファンサービスがすばらしい。

動的束縛

Schemeインタプリタを実装したら、中から動的束縛と静的束縛の違いを思い知らされた(喜んでます。) 中からの視点は楽しい(気がする。

関数型言語の勉強にSICPを読もう - (66) 4章 - 超言語的抽象(222ページ) C++でSchemeインタプリタを作ろう15

いろいろな構文が動いたので悪ノリしてパフォーマンスを測定してみたら恐ろしい罠が! 計測対象 (begin (define count (lambda (x) (if (= 5000 x) x (begin (count (+ x 1)))))) (display (count 0)))条件分岐・変数の参照・再帰・値の比較などなどの要素を…

関数型言語の勉強にSICPを読もう - (66) 4章 - 超言語的抽象(222ページ) C++でSchemeインタプリタを作ろう15

問題4.6 letのサポートを入れようという話。 letはlambdaを使って等価変換ができる。 例えば (let ((a "hello") (b "good bye")) (display a) (display b))は ((lambda (a b) (display a) (display b)) "hello" "goodbye")となる。 なのでTranslatorの時点で…

13

久々のヒット。 同僚のid:onishiに「ひげぽんは、古川 日出男 を読むと良いよ。合いそう。」と言われ入門として「13」を勧められました。 序盤の濃密な描写と視覚に訴える感性は良いっすね。 序盤のまともっっぷりから後半のちょっとした崩れ具合が、舞城王…

uIP For Windows

uIP ForWindowsを公開してからちょくちょく英語で問い合わせのメールが来るようになった。 今日もがんばって返事を書いたが役に立っただろうか。

関数型言語の勉強にSICPを読もう - (65) 4章 - 超言語的抽象(222ページ) C++でSchemeインタプリタを作ろう14

問題4.5 (display (cond (1 => plus5))))これを評価すると 6 が表示されます。 この形式の cond をサポートせよという問題。 昨日、この構文が美しくないなあとぼやいたら shiro さんからコメントを頂きました。 (cond (x => a)) はですね。xの評価結果が#f…

お風呂でコード書きたい

タフブック欲しいキャンペーンはまだだろうか。

C++のリファクタリングツール Xrefactory

もはや技術者の必読書*1となりつつある「リファクタリング―プログラムの体質改善テクニック」ですが、 その作者であるマーチンファウラー氏のMartin Fowler's Bliki in Japaneseを読んでいてふと思った。 C++のリファクタリングブラウザ(リファクタリングツ…

1週間くらい前の自分のコード

Object* Cond::eval(Environment* env) { printf("exi %s %s:%d\n", __func__, __FILE__, __LINE__);fflush(stdout);// debug exit(-1); return this; } 実装するのが面倒だから exitを忍ばせたっぽい。 exitしとけば、困った人が実装するだろう的な。 自分…

関数型言語の勉強にSICPを読もう - (64) 4章 - 超言語的抽象(222ページ) C++でSchemeインタプリタを作ろう13

問題4.5の前に condをifに展開する部分は書いてあったのだけど、translateをしてなかったので急いでコードを書く。 translateCondで、こんなCondを new してやります。 Cond::Cond(Clauses* clauses, Objects* elseActions)で、うまく動いています。 (begin …

Mona coreをLinuxでビルド

Mona coreをLinuxでビルドできるように環境を整える&&修正していました。 ひらっちさん、shadowさんの努力おかげで大分スムーズに行きました。 bim2binが gcc 4.0系でビルドエラーになる件は適当に修正してコミットしておきました。 同一現象で困っている…

display-time

;; これをやめて ;;(display-time) ;; これに (setq display-time-day-and-date t) (setq display-time-24hr-format t) (display-time-mode t)

moccur-grep/moccur-grep-find

いわゆる grep 系のキーバインドってどういうのが標準なんだろう。

はてなRSSの番組表に写真

はてなRSSの番組表に写真を表示するようにしてみました。 詳しくは、機能変更、お知らせなど - はてなRSS日記 - 番組表についてをご参照ください。 番組表を楽しくするアイデアを「はてなアイデア - はてなRSS」でお待ちしています。(もしくは気軽にトラッ…

メモリバグ壊し中

うぉ。これは経験上深いバグの予感。 vtableか?そうなのか? とか言っていると、凡ミスかもしれないけど。 スレッドのコンテキスト一部保存忘れ事件以来の難しさだ。 追記 解決した。 うーん40分くらいかかるのはまだデバッグ能力が低い気がする。 GDBを駆…

kill-summary to browse-kill-ring

SchemeインタプリタのCondの実装はまた今度にしようと思い、kill-summaryの不満点を解決すべく、browse-kill-ringに移行。 id:higepon:20060709:1152416047を書いたときにコメント欄ですすめられたのがきっかけです。 特に不満もなく良い感じ。 設定は貼り付…

readdirではまる

readdirを実装していたら明らかにスタック破壊の疑いのある動きが!。 Mona上だったら根性ですぐデバッグするんだけど、Linuxだとやる気がでてこないので放置気味。 dired-xの C-x C-jは良いね。

関数型言語の勉強にSICPを読もう - (63) 4章 - 超言語的抽象(222ページ) C++でSchemeインタプリタを作ろう12

やっとSICPのページが進みました。 問題4.4 特殊形式 and, orをインタプリタに追加せよという問題。 皆さんもご存知の通り、and, orは「ショートサーキット演算子(ショートカット演算子)」なので引数の全てが評価されるとは限りません。 そのあたりがポイ…

makeinfoがない

emacsをCVS HEADで利用しようと make bootstrapしたら makeinfoがないという警告を目撃。 texinfoというパッケージに入っているらしい。 Ubuntuのサーバーが今死んでいるっぽいのでソースから入れた。

FAT12FileSystem::read

FAT12のコードを VFSに組み込むやつ。 lookupの仕組みとファイルのreadの実装ができたので、あらかじめ用意してあったテストを通したら colinux% ./test ........ OK (8) 一発で通った!。もう天才かもしれんw。 気分よく今日のMonaの作業はここまでにしよう…

NHKにようこそ! (1)

4巻まで読んだ。 NHKは、日本引きこもり協会の略だったのか。NHKにようこそ! (1)posted with amazlet on 06.07.22滝本 竜彦 大岩 ケンヂ 角川書店 (2004/06)売り上げランキング: 3,429Amazon.co.jp で詳細を見る

国立科学博物館付属 自然教育園

目黒の白金にある「国立科学博物館付属 自然教育園」に行ってきました。以前一度16:00閉園の罠に涙を飲んだ場所。 入園料300円の元は十分取れる広さと緑の多さです。。 Google Mapsで見ると分かりますがかなり広いです。 紅葉の季節にまた行こう。 最近、公…

関数型言語の勉強にSICPを読もう - (62) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう11

引き続き Primitive Procedureの実装。今日は cons/car/cdr 。 純Lispには欠かせない要素です。 Pairというクラスを用意してあげて、 consのapply時に Pair を返す。 car/cdr は Pair を受け取り、それぞれ first/secondを返す。 という実装です。 例のごと…

diredあれこれ

diredに大分慣れてきたので、dired-xのinfoを読んだり細かい設定をしました。 覚えるべきは、C-x C-jとwdiredかな。 sorterは設定しないとストレスがたまる。 ;; dired-x C-x C-jなど ;; C-u C-x C-fでバッファ中の (add-hook 'dired-load-hook (lambda () (…

関数型言語の勉強にSICPを読もう - (61) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう10

Primitive Procedureの実装をした。 例えば + という手続きがあるがこれはSchemeインタプリタが primitive に持つ手続きである。 Schemeのオブジェクト define/lambda/Variableなどを組み合わせだけでは作れないものである。 このような Primitive Procedure…