Forth in CL

Common Lisp で Forth インタプリタを少し実装してみた。リストあそびならぬ「スタックあそび」という感じ。面白い。

FORTH> (run-forth '(1 2 3 |.|))
;; display: 3
#<data stack: (2 1) >
FORTH> (run-forth '(|:| fn 2 * 1 + |;| 10 fn))
#<data stack: (21) >
FORTH> (run-forth '(|:| doubler 2 * |;| |:| add1 1 + |;| |:| fn doubler add1 |;| 10 fn))
#<data stack: (21) >

Lisp リーダの制限で縦棒がうっとうしい。いつかリーダを自作することになるだろう。
まだ Forth っぽく動いているだけでちゃんと仕様通りに動いてはいない。