Entries from 2007-02-01 to 1 month

さて

GCの実装をはじめよう

Rimo復旧しました

ご迷惑をおかけしました http://rimo.tv

dynamic-wind 動いた

dynamic-wind がそれとなく動いた。 id:higepon:20070221:1172068276で挙げた例は、期待した通りに動作している。以前 libcont をリリースしたときに、ささださんから> dynamic-wind 相当をどうライブラリレベルで提供するかが難しそう.とコメントをいただ…

On Lisp 発売?

On Lisp コンピュータ書籍専門ネット書店 cbook24

Emacs で ChangeLog メモしているなら clmemo.el 使うべし

ChangeLog メモを書くときに、clmemo.elを使っていたのですが、C-x M(メモ入力) しか使っていませんでした。 が!それは大きな間違い、C-c C-y や C-c C-w は ChangeLog メモ魔なら、よだれが出るほどうれしいはず。 これを知らなくてかなり時間や手数を無…

dynamic-wind の仕様を読みつつ理解しよう

動的寿命 1 呼び出された手続きの本体が始まる時,その動的寿命に入る 呼び出された手続きが戻る時,その動的寿命は終わる (dynamic-wind (lambda () (display "a")) (lambda () (display "b")) (lambda () (display "c"))) abc#<undef> gosh> 動的寿命 2 動的寿命</undef>…

call-with-values / values

call-with-values / values の実装。 R5RSによれば values は以下のように call/cc を用いて定義できるらしい。 (define values (lambda things (call-with-current-continuation (lambda (cont) (apply cont things))))) call/cc をうまいこと拡張しつつ ca…

std::string/pair をやめる & gprof で速度チューニング

自作の String/Pair が出来たのでインタプリタから STL が完全に削除された。 STLを使わなくなって コンパイルが速くなった 継続が安定して動くようになった 実行速度があからさまに遅くなった ★ 遅くなった理由を調べる gprof で調べてみると。 Each sample…

apply と Boehm GC

apply call-with-values の実装をしようと思って、いろいろ考えていたら内部実装の apply の引数が良くない気がしてきた。 apply(Objects* arguments, Environment* environment)いまはこうなのだけど(Objects は Object の vector) apply(Pair* arguments, …

std::vector/map の使用をやめる

継続の実装に使用した libcont は C++ のデストラクタが複数回呼ばれてしまう可能性がある。(正確には auto 変数のデストラクタ) そのため std::vector/map の使用をやめて自作の Vector/HashMap と入れかえた。 この自作の Vector/HashMap はデストラクタが…

Rimo(リィモ)リリースしました

http://rimo.tv/ ぜひお試し下さい。

継続改善

引数をヒープ上の vector に積んでいたので、継続からの復帰で引数の数があわなかったりしていた。 (define cont #f) (+ 5 (call/cc (lambda (c) (begin (set! cont c) 10)))) (cont 20) 例えば、(cont 20)を呼ぶと (+ 5 10 20)みたいに評価されて悲しい感じ…

間違うことで初めて理解できること

間違うことで初めて理解できることってのは確実にあるよなぁ。 良くできる人に先回りして答えを教えてもらっても、やってみて間違わないと理解できない。 継続の実装で困って、インタプリタ内の引数の受渡し方法やら、Cスタックをそのまま使うことのあれこれ…

call/cc

call/cc の良い unit testを探していたら、結城さんのところで良いのを発見。 g:sicp:id:hyuki:20060506:cont3 (define find (lambda (pred list) (call/cc (lambda (return) (for-each (lambda (e) (if (pred e) (return e))) list) #f)))) (assert-check-t…

継続実装中

やっといろいろ落ち着いて call/cc の実装に取り掛かる。 まず libcont にバグがあったので修正して 0.0.2 をひっそりとリリース。 (われながら非常にマイナな上に、手抜きなライブラリだと思う)その後、call/cc を呼んでも落ちなくなるところまでこぎつけ…

transcript-on

軽い気持ちで transcript-on を実装してはまる。 あれれ。自分の出力が自分の入力に!。

cut

髪を切る場所で cut を2冊くらい斜め読みしていたのですが、予想外にためになるというか面白かった。 1ページ丸々人の顔とかだったりするのが良いよなぁ。 結構感動したので、まずは2月号を購入。 学研の科学以来の定期講読入りかも知れぬ。 そういえば cut …

プール

1000m。 750m-1000mの間を泳いでいるときに筋肉が熱くなるよねー。

Emacs で正規表現を使うなら re-builder を使おう

Emacs で正規表現を使うならば re-builder を使うことをおすすめします。 例えば、正規表現を良く使うシチュエーションとして置換があります。 M-x replace-regexpで置換対象文字列を正規表現で指定し、何に置換して欲しいかを指定するわけです。 行頭に // …

lambda式の引数は3種類

外部ライブラリを眺めていると (lambda l 本体) みたいに、引数を () で囲っていないのがあって、「あー。引数が1つのときは()を省略できるのだな。(lambda (l) 本体) と同じだ。」と思っていたんだけど。 その後いろいろ動かなくて、よーくコードを眺めてい…

引数の数をチェック

手続きに期待されない数の引数を渡すと落ちるバグを直した。 これで大分落ちなくなるだろうと予想される。

浅草 - 合羽橋 ・ 上野

今日は浅草・上野方面におでかけ。 まずランチを上野の守よしで食べる。 ここの親子丼は卵の味をいかした薄味で超うまい。 赤だしの味噌汁も格別。 続いて浅草の合羽橋道具街に行き、カップ、スープパスタ皿を購入。 あと包丁専門店で[rakuten:hands:491216:…

ライブラリ手続きを淡々と

ライブラリ手続きとして流用できそうなコードを見つけたのでこれを取り込む方向で決めた。 ふと気づけば、「名前つき let 」と「可変長引数」の実装を忘れていたので、まずは実装。 名前つき let は頭の中にこう変換すれば書けるみたいなのがあって、その通…

port と数字まわり

char-ready? だけが、すぐに実装方法が浮かばなかったのだけど、良く考えたら select 使えば良いだけ。 with-input-from-file とかは、あー便利そうだなぁ。なるほどなと思わせる仕様だよな。ついでに後回しにしてい数字まわりを実装した。 といっても、超手…

junjunnさんの描画高速化取り込み

遅くなりましたが junjunn さんの描画高速化の成果を trunk/mona に取り込みました。 memset高速化 memcpy高速化 計算量を減らす などの方法がとられています。素晴らしい。 以下 diff です。

port周りの実装

今日は port 周りの実装をした。 時間切れで char-ready? / call-with-input-file / call-with-output-file などが未実装。 明日やろう。

even?odd?procedure?boolean?

even?odd?procedure?boolean? を実装した。 R5RSのライブラリ手続きを Scheme で実装したライブラリどこかにないかなぁ。 MIT/X ライセンスと相性が良かったら更に良いな。

apply/undef/exit を実装

apply/undef(不定)/exit を実装した ところで R5RS の手続きをどれくらい実装したかを ChangeLog で管理するのがあまり楽しくない。 そこで Google Spreadsheets で管理 / 公開してみるテスト R5RS Scheme procedures意外と楽しいっす。

rlwrapが便利

id:rui314さんに教えてもらった rlwrap が超便利。 自前のインタプリタで履歴やら、いろいろなキーバーインドが使えるようになった。 詳しくは id:secondlife:20060607:1149653094 あたりをみるとよいでしょう。 適当なシェルスクリプトを書いてみた。 #!/bi…

insight クラッシュ

ありゃりゃ