Entries from 2007-11-01 to 1 month

1195056677*[life]ブラッドオレンジジュース このブラッドオレンジジュースがとてもおいしいのですが1リットル600円以上するので気軽に買えない。 [rakuten:liquorworld:1330149:image]

PLT Scheme Getting rid of set-car! and set-cdr!

PLT Scheme Blog: Getting rid of set-car! and set-cdr! mutable pair と immutable pair を分けちゃった方がいろいろ幸せという話。 面白かった。言語仕様にかかわる話。 pure functinal じゃないから良いという部分も少なからずあるし難しい。

可変個の引数に対応する - Scheme VM を書く

可変個の引数に対応する。 こういうの。 (lambda (a b . c) ...) (lambda a ...) (define (a . b) ...) これはいろいろ面倒。 (a 1 2 3) というコードがあってこの手続きが実際は何個の引数を受け取る手続きなのかをコンパイル時に知るのは難しい。 実行時に…

最近

今日は実装で小さな困難がありそれと先ほどまで格闘していた。 どうも5時間以上、同じテーマで作業を続けると後半に思考が停止しがちなので気をつけよう。 間にプールに行きたいのだが、盗難の恐れがあるのでPCを持っていくのは微妙。 最近は本当に自分は幸…

run-scheme なバッファ

run-scheme なバッファは Emacs の frame にするほうが断然効率が良いね。 そのフレームを常に最前面にする。ところで、ときどき whole-buffer を eval したいタイミングがあるのだけど C-x H, C-c C-r でみんなやっているのかな? てか、それくらい作るか。…

HDRI その2

調整が難しい。

gensym

コード変換で(gensym)を使うと expected を書くのが難しいな。 パターンマッチングを使えという話だとは思うけど面倒だよなあ。

gca.el

もう一度書きますが gca.el はやばい。

Lisp リスト操作期

完全に Lisp リスト操作期に入ったと自覚。 自分がこの期に入ったかどうかは「fold, quasiquoteを喜んで使っているか?」で判定できます。 gca.el との相乗効果でリスト操作とか楽しくてたまらない。こんなコードをさくっと書けると気持ちよい。 (define (be…

種々の文法をサポート - Scheme VM を書く

良く使われる文法をサポート。 多くがコンパイル時のコード変換で出来るので楽。 let/let*/cond あたりがサポートされると本物っぽくなるね。 null? accumulator に置かれたものが '() かどうか。 car/cdr/cons/set-cdr!/set-car! instruction begin コード…

月曜日

冨樫義博は天才だと思う。

VMの実装でC++のテンプレートをうまく使えないか

C++

某氏も指摘してくれていましたが VMの実装で C++ のテンプレートをうまく使って楽をしたり、コンパイル時に出来るだけの事をやっておくことは出来ないかなあ。(ノープラン)Template Insanity.

Gauche が速い件 - Scheme VM を書く

今回、+ と = を VM の instruction にしたので速度比較をします。 コードは以下のようなもの。(named let の展開形のようなもの) ((lambda (a) (set! a (lambda (i) (if (= i 2000000) i (a (+ i 1))))) (a 0) ) '()) 初めて作ったインタプリタの実行速度…

= と + を native call ではなく instruction にする - Scheme VM を書く

数値比較の 「=」手続きは、C言語の Object numberEqualProc(Object obj) にマッピングされている。 これを VM の instruction にすれば速くなるんじゃ?的なプロジェクトです。 (= 3 4 5) のような呼出し例が考えられるけど、引数を2つに限定してあとは展開…

Gauche関連のEmacs設定

Karetta|第2回 Kahuaセミナー資料|Gaucheのインデント設定 Karetta|第2回 Kahuaセミナー資料|run-schemeでGaucheを起動する run-scheme のバッファは別フレームが良さそうだ。 普段は全然フレームを使わないので戸惑うな。 フレームを開くときにあらかじめサ…

HDRIを知る

HDRiな生活 - HDRI(ハイダイナミックレンジイメージ)とは?これはぜひやってみたい。フリーのツールで試してみるか?

このライブどまんなかなのに

2007/12/20(木) 東京LIQIDROOM ebisu 木村カエラ・チャットモンチー・BONNIE PINK・ROMANES ※20日は女性限定公演【男性の方(オカマ、女装含む)がチケットを購入しても入場不可。その場合のチケットの払戻しなし】女性限定。うぉ。

Gauche VM の instruction を眺める - Scheme VM を書く

Gauche の src/vminsn.scm に定義されている instruction を見ていく。 instruction の粒度が分かって勉強になる。 目にとまったものを適当に列挙。 inlined operators はすぐにでもまねしよう。 ;; Some immediate constants (define-insn CONSTI 1 none) ;…

購入・読了

森博嗣の本はほぼ全て読んでいたのだけど忙しくて最近は追いつけていなかった。 ついに別シリーズに入ったのか。 キラレ×キラレは後半に「おっ」と思わせるところがあるのだけど、でもそれはあれの時代があれかもしれないなどと考えてしまう。 本筋とは関係…

ときどきの雑記帖 リターンズさん

なつたんさんも書かれていますが、ときどきの雑記帖 リターンズさんの情報がありがたい、面白い、読みきれない。 わりと僕の好みの話が多くて、他では見かけない感じ。 それそろ僕もprogramming: what's new onlineくらいは目を通そうかな。とりあえず subsc…

初めてのHDRI

楽しい。E-510で露出ブラケット撮影を覚えた。輪郭がぼやけているね。 もっとシャープにしたい。 色や濃淡が多いほど良いみたいなので、明日は外出して紅葉を撮るか。 三脚欲しいな。

新しい視点

コンパイラと VM の開発を始めて新しい視点が加わった。 静的に決まるものとそうでないものを区別して考える機会が多くなった。 コンパイラの本を読んでいれば、型の話のあたりでいやというほど、この手の話が出てくるのだけど本で読むのと感覚が違う。 コン…

define の実装 - Scheme VM を書く

方針は決まったので実装。 あらかじめやることを列挙しよう。 symbol から値を lookup する関数を書く。 VM に上記関数を組込む。 VM に define-global 命令を追加する (define-global id) accumulator に置かれているものを id に結び付かせる 以前 define …

ロベール本

c++

id:yaneuraoさんのところで知ったのだけど。ロベールのC++入門講座。 昔とてもお世話になったなあ。>ロベールさんのサイト。 欲しいかも。

解決せず

スタバで6時間ほどコーディングして80%くらいできたのだけど。 残り20%が難しい。 頭を切り替えるために風呂入るか。

熱い

スタバでの学生 A と学生 B の会話。 A.「僕の尊敬する人が、すごいセミナーに参加していて、そこに来たゲストがすごくて、それがどういう人かというと」 A.「xxx って知っている?」 B.「うん」 A.「xxx を日本で初めて construction したのがその人なわけ…

define の実装方法に関する考察 - Scheme VM を書く

以下の2例に関して define の実装を考える。 ;; パターン A (define a 3) ((lambda () a)) ;; パターン B (define b (lambda () c)) (define c 4) (b) define はトップレベルでのみ有効とし2つ実装方法を考えてみる。 global 変数は global に管理する ヒー…

display closure に トップレベル define

define の実装に display closure をそのまま流用できないか考えるのが今日の課題。 出来そうな気がするのだけど、define されたタイミングとその変数が使われたタイミングが前後するのがやっかいそう。

C++ でもテスト通った

C++ で書いた VM でもテスト通った。 コンパイラ側に多くの負担が行っているので VM の実装は楽。

きたきた

C++でコード書いているのに (if って書きはじめた。