next up previous
Next: 2.2 再帰関数の定義 Up: 2 インタプリタの実行例 Previous: 2 インタプリタの実行例

2.1 関数の定義

関数の定義は,シンボルの本体にlambdaスペシャルフォームで 作られるリストを代入することで可能です. つまり,

==> (set! test (lambda (n) (car n)))
(EXCL::.LEXICAL-CLOSURE.
  (LAMBDA (&REST ARGS)
    (INTERP CODE (NCONC (MAPCAR (FUNCTION LIST)
                                VARS ARGS) ENV)))
  ((CODE BEGIN (CAR N))
   (VARS N)
   (ENV)
   (PARAMS (N) (CAR N))
   (NAME . LAMBDA))
  NIL
 ((SCHEME-SPECIAL-FORM-INTERP . EXCL::INVALID)) NIL) 

==> (test '(a b c))
A 
==> (begin (test '(a b c)))
A
という具合いに関数testが定義可能です.

generated through LaTeX2HTML. M.Inaba 平成18年5月6日