再帰サポート

http://github.com/mzp/scheme-abc/commit/520b7e7a3f4ebe086a5aaedfb0b51627333b1909

再帰が使えるようになったぜいっ!letrecでもdefineでも使えるようになってます。

(letrec ([fact (lambda (n) 
		 (if (<= n 1)
		     1
		     (* n (fact (- n 1)))))])
  (print (fact 10)))

(define (fact n)
  (if (<= n 1)
      1
      (* n (fact (- n 1)))))

(print (fact 10))

スコープを生成する順番と記号表に名前を追加するタイミングを変更するだけでサポートできた。
ところで、Schemeってletとletrecがあるのに、再帰を定義しないdefineはないの?