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
- 作者: るびきち
- 出版社/メーカー: 技術評論社
- 発売日: 2011/11/26
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 220回
- この商品を含むブログを見る