GNU / sed Lispインタープリター

Lisp pythonインタープリター1行で ? 退屈すぎる。



日本のプログラマー、Googleエンジニアの浜路真一郎がsedで書いた。 Sedは、単純なプログラミング言語であるストリーミングテキストエディターです。 変数はありません。GOTOプリミティブと分岐機能のみがあります。 それにもかかわらず、チューリング完全です。



実装には600行しかかかりません。



次のようになります。





使用例
$ sed -f sedlisp.sed # '>'     > (car (quote (abc))) a > (cdr (quote (abc))) (bc) > (cons 1 (cons 2 (cons 3 ()))) (1 2 3) > (defun fact (n) (if (eq n 0) 1 (* n (fact (- n 1))))) (lambda (n) (if (eq n 0) 1 (* n (fact (- n 1))))) > (fact 10) 3628800 > (defun fib (n) (if (eq n 1) 1 (if (eq n 0) 1 (+ (fib (- n 1)) (fib (- n 2)))))) (lambda (n) (if (eq n 1) 1 (if (eq n 0) 1 (+ (fib (- n 1)) (fib (- n 2)))))) > (fib 12) 233 > (defun gen (n) ((lambda (xy) y) (define G n) (lambda (m) (define G (+ G m))))) (lambda (n) ((lambda (xy) y) (define G n) (lambda (m) (define G (+ G m))))) > (define x (gen 100)) (lambda (m) (define G (+ G m))) > (x 10) 110 > (x 90) 200 > (x 300) 500
      
      





Githubリポジトリ



All Articles