 
 
 
 
 
   
 Next: 8 クロージャによる結果記憶型関数(memoization)の実現
Up: ソフトウェア特論 講義資料 クロージャ,オブジェクト指向
 Previous: 6 リードマクロ
 
シンボルの関数定義は,symbol-functionを用いてアクセスする
ことができ,setfによってその関数定義を代入することも可能
となります.
 
> (defun test (x) (* x x))
TEST
> (symbol-function 'test)
#<CLOSURE TEST (X) (DECLARE (SYSTEM::IN-DEFUN TEST))
 (BLOCK TEST (* X X))>
> (setq a (symbol-function 'test))
#<CLOSURE TEST (X) (DECLARE (SYSTEM::IN-DEFUN TEST))
 (BLOCK TEST (* X X))>
> (funcall a 2)
4
> (test 3)
9
> (setf (symbol-function 'test2) a)
#<CLOSURE TEST (X) (DECLARE (SYSTEM::IN-DEFUN TEST))
    (BLOCK TEST (* X X))>
> (test2 4)
16
これにより,test2をtestと同様に定義したこととなります.
 
generated through LaTeX2HTML. M.Inaba 平成18年5月6日