我正在编写一个包含阅读器宏的Common Lisp库。 现在让我担心的是,我的阅读器宏可能会覆盖具有相同调度宏字符的现有宏。为避免这种冲突,我想为用户提供某种方式来控制是否应从库外部定义我的阅读器宏。
特殊变量*features*
似乎可以达到目的,请进行评估
(push :some-suppression-flag *features*)
在加载库之前和
#-some-suppression-flag (set-dispatch-macro-character ...)
在库中。
我知道Named Readtables可以解决“全局可读取问题”,但是我不想使用它来使我的库几乎没有依赖项。
以上使用*features*
的方式是否是在加载/编译时将某些选项传递给库的好方法?
还是有通常的做法?
答案 0 :(得分:4)
只需提供一个用户可以调用的功能:
(defun enable-foo-syntax (&optional (enabled-p t))
...)
(enable-foo-syntax t) ; on
(enable-foo-syntax nil) ; off