next up previous
Next: 7 グラフ Up: 6 例題:リストの対話的編集プログラム Previous: 6.6 リスト構造のプリント

6.7 Common Lisp上での関数の編集例

インタプリタの環境で関数を定義するとその本体はリスト構造で表現されてい ます.関数の本体のリスト構造をleditにより変更すると,その関数の定義自体を 変更することができます.
<cl> (defun test (a) (list a))
TEST 
<cl> (test 1)
(1) 
<cl> (ledit (symbol-function 'test))
E>p
(LAMBDA (A) (BLOCK TEST ...))
E>3
E>p
(BLOCK TEST (LIST A))
E>3
E>p
(LIST A)
E>(n (list a a))
E>pp
(LIST A (LIST A A))
E>top
E>pp
(LAMBDA (A)
  (BLOCK TEST
    (LIST A (LIST A A)))) E>ok
T 
<cl> #'test
(LAMBDA (A) (BLOCK TEST (LIST A (LIST A A)))) 
<cl> (test 1)
(1 (1 1))
図 1: グラフの例
\includegraphics[width=7cm]{/home/inaba/eps/lecture/fig/searchspace.eps}


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