(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)) ->
(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)))
(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) ) )