アナフォリック・マクロを提供するライブラリのitの競合を回避したい
※注: シンボルが競合しないようなアナフォリック・マクロの作り方の質問ではありません。
アナフォリック・マクロを提供するライブラリには、anaphora、arnesi、kmrcl等々がありますが、これらを混ぜて使うとitが競合します。
また、競合しないようにするとなると、
(kl:aif foo kl:it
(anaphora:aand kl:it anaphora:it))
のようにパッケージ名を明記することになり残念です。
itは共通のパッケージから継承するようにすれば、大体解決しますが、もっとスマートな方法はないでしょうか。
なお既存のライブラリにコード修正は加えないことを前提とします。
(intern "IT" :cl-user)
(defpackage :kmrcl
(:import-from :cl-user :it))
(defpackage :anaphora
(:import-from :cl-user :it))
(ql:quickload :anaphora)
(ql:quickload :kmrcl)
(in-package :cl-user)
(anaphora:aif 'foo
(kmrcl:aif it it))
;=> FOO