#:g1: package-renamingの紹介

Posted 2014-01-20 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の21日目です。

package-renamingとはなにか

 package-renamingはfare氏作の局所的にパッケージをリネームするのに使えるユーティリティです。

パッケージ情報

パッケージ名package-renaming
Quicklisp
CLiKihttp://cliki.net/package-renaming
Quickdocshttp://quickdocs.org/package-renaming

インストール方法

(ql:quickload :package-renaming)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 とりあえず、

(defpackage :maporfic
  (:use :cl)
  (:export :foo))

というパッケージがあったとすると、

(package-renaming:call-with-effective-package-renamings
 '((:maporfic :m))
 (lambda () (read-from-string "m:foo")))
;=>  MAPORFIC:FOO
;    5

(find-package :m)
;=>  NIL

(read-from-string "m:foo") ;!! Package M does not exist.

(package-renaming:with-effective-package-renamings ((:maporfic :m)) (read-from-string "m:foo")) ;=> MAPORFIC:FOO ; 5

のような感じで使えます。
ASDFの:around-compileと組み合せて、ファイルのコンパイル時にリネームしたりもできるようです。
ファイルのコンパイルとロードが絡んでくると、色々と注意点や制限はあるようですが、詳しくは、READMEを参照のこと。

まとめ

 今回は、package-renamingを紹介してみました。
局所的にパッケージをリネームしたいこともそんなに無さそうですが、古いライブラリをできるだけ手直ししないで読み込んだりする場合に威力を発揮したりするのかもしれません。

comments powered by Disqus