卒研

卒研の結果

いまさらながらあげておく。 ガベージコレクションの実装法と評価 あまり良い研究じゃなかった気もする。バイトばかり行ってたし。

駄文 その5 ロスタイム

連休明けまでレポートを200通見なければいけないらしい。よって、11日に出しても連休明けに出しても換わらないとのこと。このロスタイムに気に入らない部分を直すんだ!

駄文 その5 ロスタイム

連休明けまでレポートを200通見なければいけないらしい。よって、11日に出しても連休明けに出しても換わらないとのこと。このロスタイムに気に入らない部分を直すんだ!

駄文

卒論の完遂率 25% じかんかかるは11日までに終わらないかもなぁ

こーど

sigschemeを参考にすればsigschemeのように、emacsを参考にすればemacsのようになってしまう自分のコードが情けない。 sigscheme、rubyのgcは同じ方法なのでコードがほとんど同じように見える。グローバルオブジェクトの取り扱いはよく見ていない。sigscheme…

GC頻発

たらいまわし関数を動かしたらGCが頻発してぜんぜん計算が進まない件。 (set! tak (lambda (x y z) (cond ((< y x) (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))) (else y)))) (tak 15 5 0) たとえばこんなのを評価した場合。cellをどんど…

GC

最近サボってたけどGCが正しく動くようになった。アルゴリズムは保守的mark & sweep。 cons cellをたどるときはただ再起呼び出しをしているだけなので、スタックを消費してしてしまう簡易実装。 EmacsやRubyのソースを参考にしているので、ソースはかなり似…

quasiquoteの無い世界

一回しか書いてないけど、マクロのテストのためにこんなコードを書くのはもう嫌だ。 (macro our-min (lambda (a b) (cons 'cond (cons (cons (cons '< (cons a (cons b '())))(cons a '())) (cons (cons 't (cons b '())) '())))))

末尾再帰の最適化

SIODのアルゴリズムをパクったらできたっぽい。 SIODのクロージャの末尾再帰の最適化は、クロージャの環境を拡張したものを現在の環境にして、codeの部分を次にえばるS式にしてる。頭いいなぁ。自分が作っている処理系はネイティブスタックで末尾再帰の最適…

/lib/tls/i686/cmov/libc.so.6でエラー

こんなん出た。 Program received signal SIGSEGV, Segmentation fault. 0xb7f2909a in write () from /lib/tls/i686/cmov/libc.so.6こんなんも Program received signal SIGSEGV, Segmentation fault. 0xb7eedb65 in _IO_file_overflow () from /lib/tls/i6…

デバッグにて

今までgccに-gだけをつけてgdb使っていたけど、staticな関数にbreak pointを指定できなかったり、一行ずつ実行できなかったりしていた。 これからはオプションに-gstabs+をつけることにした。ところで、gdbでlongjmpのデバッグはできるのか?これってどうす…

map動いた

リストのtransposed(zip)を書いて少し修正したら動いた。 Starting program: /home/troter/work/jmc-lisp/jmcl > (map (lambda (a b) (* a b)) '(1 2 3 4 5) '(1 2 3 4 5)) (map (lambda (a b) (* a b)) (quote (1 2 3 4 5)) (quote (1 2 3 4 5))) (1 4 9 16…

mapが動かない。

SICPのcons、car、cdrの再定義は動作した。 (gdb) run Starting program: /home/troter/work/jmc-lisp/jmcl > (set! cons (lambda (x y) (lambda (m) (cond ((eq? 'car m) x) (t y))))) (set! cons (lambda (x y) (lambda (m) (cond ((eq? (quote car) m) x)…

組み込み関数

昨日の高崎線の大幅遅延の間にset-car!とかいろいろ組み込み関数を追加した。 でもって、これが動かない。 Starting program: /home/troter/work/jmc-lisp/jmcl > (set! cons (lambda (x y) (lambda (m) (cond ((< 0 (- m 1)) x) (t y))))) (set! cons (lamb…

新しい環境

lispでクロージャで新しい環境を作成するタイミングは、そのクロージャを適用するとき。 クロージャを生成するときに新しい環境を生成して、その環境を使いまわすとたぶんこうなる。 > (set! number (lambda (x) (lambda () x))) > (set! num10 (number 10))…

気づいた

卒研日記にしたいと(プロフィールに)書いておきながら卒研ねたがひとつもない点について。 結論、カテゴリを作ればよい。 やっぱ形からでしょ。