ウォンツテック

そでやまのーと

scheme処理系もどき

とりあえず再帰は出来るようにしました。scopeがおかしかったのでParseクラスのスタックとして書き直し。あとlambdaっぽいのも出来るようにしときました。

(define (func a)
  (lambda (x) (+ a x)))
((func 3) 5)

とか

(define (fib n)
  (if (< n 3)
      1
      (+ (fib (- n 1)) (fib (- n 2)))))
(fib 10)

が可能です。

追記

(define (fact)
  (lambda (n)
    (if (= n 0)
        1
        (* ((fact) (- n 1)) n))))
((fact) 5)

こんなのも可。

ソース