by shigemk2

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

レキシカルスコープを使う

elispでレキシカルスコープを使うにはlexical-letを使う。

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

(defun f2 (func v)
  (funcall func v))
(let ((v 'external))
  (f2 (lambda (x) (cons x v)) 'internal)) ; => (internal . internal)
(lexical-let ((v 'external))
  (f2 (lambda (x) (cons x v)) 'internal)) ; => (internal . external)

P200

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル