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 っぽく動いているだけでちゃんと仕様通りに動いてはいない。