有一个通用的Lisp软件包命名惯例吗?

20

我创建了一些自己的用户包,但遇到了名称冲突。

在Java中,命名惯例是在包名中使用您的域名: 例如:import com.example.somepackage;。

对于常见的Lisp软件包,是否有广泛使用的包命名惯例?

谢谢,

Russell

3个回答

20

我通常使用一个独特的单词:salza,skippy,zs3等。我并不试图与库功能直接相关联。我尽量避免像“zlib”、“zip”或“png”这样其他人可能使用的通用词汇。

Edi Weitz使用弗兰克·扎帕(Frank Zappa)相关的词汇为他的许多软件包命名:Hunchentoot、Drakma等等。

有些人使用Java风格的org.foo.bar反转域名命名。

因此,直接回答是没有一个共同的、被广泛认可的规则大家都使用。


1
谢谢回答。这证实了我使用过的几个软件包的观察结果,除了使用弗兰克·扎帕相关词汇 :)。 - Russell
不要忘记德鲁·克兰普西(Drew Crampsie)的背词,例如lisp-on-lines。 - felideon
3
我个人不喜欢在Lisp的名称中使用点。 - Luís Oliveira

7

有时候你会看到一些包提供了一个薄的兼容性包装器,以通常实现但非标准化的功能,通常被称为TRIVIAL-SOMETHING

这导致一些非常棒的名称:用于以独立于实现的方式处理*FEATURES*的库称为TRIVIAL-FEATURES;更好的是,用于以标准化的方式与垃圾回收器交互的库称为TRIVIAL-GARBAGE


5
没有通用的约定,但有一些模式:
  1. 当库是从其他语言移植、包装或接口库时,通常会加上前缀 cl-,例如 cl-gtk2cl-ppcre。尽管曾经有过滥用该前缀的情况,有很多包(如 cl-who)实现了唯一功能,但仍然使用它。
  2. 如果包是特定于具体实现的,则以实现简写为前缀(最显著的是: sb-),如 sb-queuelw-compat
  3. 如果包是不同实现之间的兼容层,则通常以 trivial- 为前缀,例如 trivial-backtracetrivial-garbage
  4. 还有一个 s- 前缀,可能代表“符号”,例如 s-xml,但很少使用。
这些前缀有助于使包的名称独特,因此简化了在网络上查找有关其信息的过程。
否则没有特定的约定,但一般规则是优先选择短、独特且可能描述性的名称。因为易于记忆、使用和查找信息的原因。
如果包的名称很长,则提供一个更短的昵称会很方便,因为往往人们会使用限定其名称的包的符号。例如,在我的代码中,我将 cl-ppcre 添加一个昵称 re,这使得客户端代码更加易懂和清晰。尽管应该小心,以免昵称引起名称冲突。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接