(let ((y 5)) (defun print_y (x) y) ; print_yを定義します (defun map2 (f lst) (let ((y 20)) (mapcar f lst))) ; print_yを評価します (let ((y 10)) (map2 #'print_y ; print_yを束縛します (list 1 2 3 4 5))))このコードの出力がどのようになるかを考えてみる。 レキシカルクロージャの場合 (5 5 5 5 5) ダイナミッククロージャの場合 (10 10 10 10 10) 開ラムダ式の場合 (20 20 20 20 20) という3種類の可能性があるわけだが、 上のコードは実はEmacs Lispなので、開ラムダ式として評価され、結果は(20 20 20 20 20)となる。 ところで、ダイナミッククロージャという言葉が本当にあるのか心