好き勝手な拡張が出来るのがelispの魅力だが、
名前空間がフラットであるために、すべての関数が
どこからでも呼び出せる。
勝手に関数名を変更したらファイル内の全ての処理に
影響が及ぶ。
elispは、githubとかもあるから
他の人が拡張しやすいから、勝手に関数名や変数名を
変更したら拡張してくれた人の処理にまで影響が及ぶ。
特に同じ関数名で引数の順序を入れ替える行為は最悪といえる。
そのため、elispでの開発において大切なのは互換性を保つことである。
関数名を変更するにはdefaliasを使う。
;; これは失敗 (defun f () 'original) (defalias 'f-old 'f) (defun f () 'redefined) (f) ; => redefined (f-old) ; => redefined ;; これが正解 (defun f () 'original) (defalias 'f-old (symbol-function 'f)) (defun f () 'redefined) (f) ; => redefined (f-old) ; => original ;; 変数の別名定義を行う (defvar var 'original) (defvaralias 'alias 'var) (cons var alias) ; => (original . original) (setq alias 'modified) (cons var alias) ; => (modified . modified)

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