2010-09-01から1ヶ月間の記事一覧

Toy VM (15) - SECD マシンでの継続

SECD マシンで継続について(わたしが理解したことを)書こう。トップレベルの扱いが異なっているため、 gauche と同じ結果になっていない。が、とりあえず。追記。どうもまだバグがある気がしてきた。 ;; debug を nil にして実行 SECD> (secd-eval '(let (…

Toy VM (14) - SECD マシン

ようやく少しまとまったので github に置いておきます。 LispMe の SECD マシンを、勉強のため Common Lisp で実装したものです。ただし現時点では LispMe の一部しか実装されていません。R5RS 準拠などはほど遠い状態です。主要な関数/マクロは以下です。 s…

transition rule

ようやく LDCT を実装。 (deftransition secd (s e c d) (:transitions ( s e (:NIL . c) d -> (nil . s) e c d ) ( s e (:LDC x . c) d -> (x . s) e c d ) ( s e (:LD (m . n) . c) d -> (x . s) e c d where x = (locate m n e) ) ( s e (:LDF |c'| . c) …