JavaでLispを書いてみた
Java で Lisp 書いてみました。
ちょっと動くようになったので公開してみます。
https://github.com/moremagic/MyLisp
実行するときはこんな感じです
String[] code = { "(+ 1 2.012)", "(cons dog (cat tree))", "(quote (+ 1 2))", "(+ 1 2 3 4.10)", "(+ 1 2 3 4 (+ 1 2) (+ 1 1))", "(+ 1 2 3 4 (+ 1 2 (+ 1 1)))", "(number? 1)", "(define a (+ 100 20)) (+ a 200)", "(define sub1 (lambda (n) (+ n 1))) (sub1 200)", "(define sub1 (n) (+ n 1)) (sub1 200)", "(null? (quote ()))", "(null? (quote aaa))", "(null? 0)", "(and #f #t (null? ()))", "(or #t (+ a b))", "(not (+ 1 2))", "(pair? (quote (1 2 3)))", "(> 2.12 2.1)", "(- 10 0.0001)", "(define < (lambda (a m) (> m a)))", "(define factorial (lambda (n m) (if (< n 1) m (factorial (- n 1) (* n m)))))", "(factorial 2800 1)", }; MyLisp lisp = new MyLisp(); try { for (String s : code) { System.out.println(s); lisp.evals(s); } } catch (Exception err) { err.printStackTrace(); }
末尾再帰最適化もちゃんとできてないし
対話環境もまだできてないです。
最近これのせいで寝不足気味でしたが
実行環境作るの面白いですね。
少しづつ足りないとこを作りこんでいこうと思いますが、どうなることやら。