解いた問題

3/25/2012

ClojureでLispインタプリタ

思いつきでやってみた。意外と面白かった。
ちゃんと動くかは自信がない。
関数を定義するときに [ ] を使わないといけないのは気にしない。






=> (defun fib [n] (if (<= n 1) 1  (+ (fib (- n 1)) (fib (- n 2)))))
fib
=> (fib 3)
3
=> (fib 4)
5
=> (fib 5)
8
=> (+ 0 ((lambda [A B] (- (fib A) (fib B))) 5 4))
3
=> (quote (0 1 2 3))
(0 1 2 3)
=> (car (quote (0 1 2 3)))
0
=> (list 0 1 2 3)
(0 1 2 3)
=> (cdr (list 0 1 2 3))
(1 2 3)
=> (progn (print 0) (print 1))
0
1
nil
=> "lisp"
lisp