【发布时间】:2019-09-18 02:33:34
【问题描述】:
背景
我正在编写一个包含阅读器宏的 Common Lisp 库。 现在我担心我的阅读器宏可能会覆盖现有的具有相同调度宏字符的宏。为了避免这种冲突,我想为用户提供一些方法来控制是否应该从库外部定义我的阅读器宏。
特殊变量*features* 似乎服务于这个目的,评估
(push :some-suppression-flag *features*)
在加载库之前和
#-some-suppression-flag (set-dispatch-macro-character ...)
在图书馆里。
我知道Named Readtables可以解决“全局可读问题”,但我不想用它来让我的库依赖很少。
问题
上述使用*features* 的方式是在加载/编译时将一些选项传递给库的好方法吗?
还是有这样做的常见做法?
【问题讨论】:
-
我有一个功能可以将阅读器宏安装到给定的 readtable 中。参见例如 FSet 或 SERIES。
-
感谢您的评论。这些库似乎包含许多有用的技术来创建 Common Lisp 库。我去看看。
标签: common-lisp