- 以下の実行例を試して返る値を求めよ.
(defun two-funs (x)
(list (function (lambda () x))
(function (lambda (y) (setq x y)))))
(setq funs (two-funs 6))
<cl> (funcall (car funs)) -> ?
<cl> (funcall (cadr funs)) -> ?
<cl> (funcall (car funs)) -> ?
-
(setf g1
(let ((i 1)
(r #'(lambda () (setf i 1)))
(v #'(lambda () (setf i (* i 2)))))
#'(lambda (a)
(cond ((eq a 'r) r)
((eq a 'v) v)))))
ということを行なった後、以下の4つを順に実行した
それぞれの評価結果を示せ。
(funcall (funcall g1 'v)) ->
(funcall (funcall g1 'v)) ->
(funcall (funcall g1 'r)) ->
(funcall (funcall g1 'v)) ->
- x がスペシャル変数でない場合に、
(down-foo-1)、(down-foo-2) をそれぞれ評価するとどうなるか。
逆に、x がスペシャル変数の場合にはどうなるか。
(defun down-foo-1 (x)
(down-baa '(lambda () (1+ x))))
(defun down-foo-2 (x)
(down-baa #'(lambda () (1+ x))))
(defun down-baa (f) (let ((x 100)) (funcall f)))
- 次の関数 test を実行するとどういう値が返るか。
(defun counter (a)
#'(lambda (b) (setq a (+ a b))))
(defun test ()
(setq f1 (counter 1))
(list
(funcall f1 1)
(funcall f1 1)
(funcall f1 1)
)
)
- 6種類のグラフ記述のどれが与えられても
*graph-vertex-list*を得る関数graph-vertex-listを作れ.
- 6種類のグラフ記述のどれが与えられても
*graph-edge-list*を得る関数graph-edge-listを作れ.
- create-universe1,create-universe2を走らせてみよ.
- create-universe2のcrashedしているかどうかはどのように判定してい
るか.また,クラッシュした後のパーティクルの運動を考慮して状態を変更す
るようにメソッドを再定義せよ.