Next: 2.3 手続きを引数とする手続きの定義と実行例
Up: 2 インタプリタの実行例
Previous: 2.1 関数の定義
再帰関数も同様に定義可能です.
==> (set! fact (lambda (n)
(if (= n 0) 1
(* n (fact (- n 1))))))
(EXCL::.LEXICAL-CLOSURE.
(LAMBDA (&REST ARGS)
(INTERP CODE (NCONC (MAPCAR (FUNCTION LIST)
VARS ARGS) ENV)))
((CODE BEGIN (IF (= N 0)
1 (* N (FACT (- N 1)))))
(VARS N) (ENV)
(PARAMS (N) (IF (= N 0) 1 (* N (FACT (- N 1)))))
(NAME . LAMBDA))
NIL
((SCHEME-SPECIAL-FORM-INTERP . EXCL::INVALID)) NIL)
==> (fact 5)
120
generated through LaTeX2HTML. M.Inaba 平成18年5月6日