by shigemk2

当面は技術的なことしか書かない

ダイナミックスコープとレキシカルスコープ

実行するまで分からない動的なスコープを
ダイナミックスコープという。

字面を見てスコープが分かるスコープをレキスカルスコープという。

Emacs Lispはダイナミックスコープであり、
Common Lispはレキシカルスコープという。

下記はダイナミックスコープの例。
大きなコードになるとおかしな挙動になるから注意する。

(defun f1 (func)
  (let ((v 'internal))
    (funcall func)))
(let ((v 'external))
  (f1 (lambda () v)))			; => internal

P199

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル