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

TAPC

TAPC をサポート。LispMe 論文の丸パクリだけど。例によって末尾再帰が有効な例を探すのが難しい。 SELR はまだ。 INTERP> secd-4 " INITIAL STATE TRANSFORMED STATE S E C D S E C D -------------------------------------------------------------------…

Toy VM(13) - 悪あがき

以下は早すぎる最適化というやっちゃいけないことの典型。ホンモノのVM, YARV とか gauche とかの融合命令という言葉を使ってみたかっただけ。いくらなんでも、gauche より30倍遅いのは問題だ。fib 39 で5分かかる。gauche は10秒だ。ここで命令を増やし…

Toy VM (12) - 小まとめ

SECD マシン もともと SECD マシンはとてもシンプルで、簡単に実装できるものですが、 その状態遷移ルールがそのままプログラムになるように、マクロを書いていました。定義したマクロを使うと以下のように SECD マシンを定義できます。 (def-secd-machine s…

table

満足。 SECD: DESIGN ISSUES(http://hdl.handle.net/1880/46590) の Table-1: Abstract Machine Level Transitions がプログラムで書けた。 " INITIAL STATE TRANSFORMED STATE S E C D S E C D - s e (nil . c) d -> (nil . s) e c d s e (ldc x . c) d -> …

match

まだまだ機能が足りないが match を書いている。パターンマッチも(最適化と汎用性を気にしなければ)難しくはない。 (def-secd-machine secd-1 "secd machine" ;; initial state -> transformed state ( s e (:NIL . c) d -> (nil . s) e c d ) ( s e (:LDC…

gauche util.match メモ

gauche の util.match で、束縛する必要が無いパターンには「_」を使うとよいことを shiro さんに教えていただいた。 (http://practical-scheme.net/chaton/gauche/a/2010/05/30 あたり)util.match のリファレンスはこちら。 http://practical-scheme.net/ga…