Entries from 2007-08-01 to 1 month

Essentials of Programming Languages

なつたんさんから、僕が探しているのはEssentials of Programming Languagesでは無いかとのアドバイスを頂きました。 ありがとうございます!。 なつたんさんの紹介してくれている「なつたん: 末尾最適化の本」記事の中で引用されている部分を見ていてもかな…

この発想は無かった

list をマクロで書こうとしてたけどこれが賢いな。 (define list (lambda args args))

処理系の手術中

実行効率の向上・設計の見直しを実施中。 これの影響で define-syntax が全然動かなくなり、マクロで定義していた derived expressions がうごかなくなり致命的。 define-syntax が動くのはまだまだ先になりそうなので、define-macro をさっさと実装して代用…

lsofコマンド

lsof - list open fileslsofとか lsof -i とかしてみると面白いよ。 今日知った。

よこく

今夜あたりに末尾再帰についてまとめた記事を書く。(本当は昨日書くはずだった)。

gdbでmake

gdb

gdbで間違えて make コマンド実行したら動いた。 (gdb) make make: `all' に対して行うべき事はありません. なんだこれ?なぜ? まあうれしいのだけどね。

末尾再帰

最近一部で盛り上がっている「末尾再帰」について自分の理解を確認するのも兼ねて書いてみます。 (そもそも自分がふったのがきっかけっぽいので)。 上級者の方は間違い等に厳しくつっこんでもらえると助かります:-) 背景 自分が末尾再帰を知ったのは多分Sc…

Linuxで知らないコマンド

whereis 知らなかった。 nobita% whereis ruby ruby: /usr/bin/ruby /usr/bin/ruby1.8 /usr/bin/ruby1.9 /usr/lib/ruby /usr/X11R6/bin/ruby /usr/X11R6/bin/ruby1.8 /usr/X11R6/bin/ruby1.9 /usr/bin/X11/ruby /usr/bin/X11/ruby1.8 /usr/bin/X11/ruby1.9 /…

ese-eval4 - ifzero (was 写経)

ifzeroを自前で追加してスタックの使われかたへの理解を深める。 @@ -24,6 +24,11 @@ (name . begin) (args . ,args))) +(define (make-ifzero . args) + `((type . symbol) + (name . ifzero) + (args . ,args))) + (define (make-func cont) `((type . fun…

slibとdefmacro

quasiquote 実装できたから、いよいよslibが動くぜと思ったら defmacro が使われているところが多いな。 追記 defmacroは処理系が用意した伝統的なマクロの仕組みへのエイリアスなのか。 なるほど。 追記2 ん。いやちがうか。もう少し調べよう。

quasiquote実装

quasiquote を中途半端に実装。 入れ子の場合は今のデータ構造だと面倒なので省略。 早くデータ構造を変えないと色々なところが歪に。R5RS は例にそれとなく細かい仕様が書かれていて見逃しがち。 `(( foo ,(- 10 3)) ,@(cdr '(c)) . ,(car '(cons))) => ((f…

ese-eval3 - begin (was 写経)

make-begin-cont の invoke-proc が2種類。 (begin 1 (begin 2 3)) の計算経過を絵に描いてみると分かるけどスタックの使われ方が違う。 引数の eval の結果を待っている自分自身をスタックから pop してしまうところがポイントか。 (use util.list) (use ga…

雑談

先伸ばしになっていた quasiquote の実装を考える。(quasiquote, unquote, unquote-splicing) あらすぐ作れそうだな。なぜ躓いていたのだっけ?実装計画を ChangeLog に箇条書きして、あとは今までサボっていた subversion の svn:externals をやめたりタグ…

ドラゴンブック1

半分くらい読んだ。 気を抜くとすぐに分からなくなる。 斜め読みくらいが良いのだろうか。

なかのひと アクセス元の性別・年齢推定を公開

なかのひとに新機能が出てたのでこの日記と他のサイトさんの結果を比較していたのですが この日記は男女比が異常!女性6%って少なすぎ(涙目 アクセスは大学関係や研究所、某大手企業が多くて光栄ですが。

dired でディレクトリを再帰的に削除する件

(setq dired-recursive-deletes 'always) としていたら、削除時に yes-or-no-p されなくなったので (setq dired-recursive-deletes 'top) とした。 そもそも調べてみると nil means no recursive deletes. `always' means delete recursively without asking…

Re:末尾再帰最適化判定

ふっておいて乗り遅れまくった。。 alohakunさんのまとめを明日読もう。

ese-eval2 - begin (was 写経)

id:higepon:20070804:1186242639 id:higepon:20070807:1186498468 の続き。 native stack 使う版はすんなり理解できるがこれは難しいね。 begin の導入。begin は引数(という言いかたはあまり良くないが)を順に評価していき、最後の評価結果を返す。 最後…

ese-eval (was 写経)

処理系の基礎を学ぼうぜ的な ese-eval 講座 by Mさん。 ノートにスタックを書きながら Scheme (Gauche)で書いてる。 一般化らしい 引数の扱いが make-flatten-cont あたり。 add は可変引数に対応している。 短いけど頭が混乱するな。 だいぶ難しくなって…

ブログとの一致

ここ数日たくさんの人と会ったのだけど、その人の顔と名前とブログが一致しないな。 田中さんの例のように、あとから「うぉ。田中さんってあの日記の中の人か。もっといろいろ聞いておけば良かった」と気づけばまだましな方。 自分も含めて、ブログのスクリ…

ループ

id:kzkさんに loop unrolling (内容は知っていたけどこの言葉を知らなかった)試してみてはアドバイスをいただいたのでやってみた。 が、あまり変わらなかった。 それ以前に最近 gprof してないのがダメな気がする。gprof とってみた。これはヒドイ><。 Fl…

とりとめ

ないメモ。 Quicksilverを調べてみよう for ループを展開すべし TaPL はやはり購入しよう(西川さんが読めと) jsScheme のコードを読もう ドライバモデルはWDM がきれいらしい 牧さんコード書きすぎ 40bit CPU で Linux 。15万行のパッチ。 KMCにXXを入れよう

Re:libcont

http://shinh.skr.jp/m/?date=20070527#p02 触ってもらっているのに気づいていなかった。うわああああ。当時は stack の restore がバグっていたのは御指摘の通りで、save/restore を繰り返すとスタックをがっつり消費していくという極悪仕様。 現在は多少や…

いまさらだけど

Anywhere.fmって、Y Combinatorだだだ。

各種エディタの学習曲線

viとemacsが面白すぎる。(曲線が正しそうという意味で) Visual Studio はある一定以上に到達すると止まるのか?Picoってなに? The Random Musings of Maulkin より http://blog.halon.org.uk/2006/08/04#editor-learning-curves

気を使うコード、頭を使うコード

ルールを厳格に守りミスをしないように気を使い完成に近付いていくコード。 悶えながら頭を使って完成に近付いていくコード。 コーディングしているときは前者の方が楽しくてノリノリなのだけど、後者の方が身になるよね。

写経

某氏がJavaScriptで書いたコードをScheme(Gauche)で写経。 native stack版 (use util.list) (use gauche.test) (define (make-int i) `((type . int) (value . ,i))) (define (make-add . args) `((type . add) (args . ,args))) (define (ese-eval exp) (co…

末尾再帰最適化をC/C++上で検知してみたい

C C++

某所で「処理系が末尾再帰最適化をしているかを、処理系で動くコードから判定できるか」的な話をふったところ C/C++ なら出来そうだよねと id:yaneurao さんからツッコミが。 やってみよう。 最適化されているなら is_tail_rec_opt_internal の引数である le…