是否有一个常见的lisp包命名约定?

时间:2009-11-16 00:35:43

标签: lisp common-lisp

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

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

对于常见的lisp包,是否有广泛使用的包命名约定?

此致

罗素

3 个答案:

答案 0 :(得分:20)

我使用的约定是使用一个独特的词:salza,skippy,zs3等。我并没有真正尝试与库功能有直接关系。我试图避免其他人可能使用的通用词,如“zlib”或“zip”或“png”。

Edi Weitz使用与Frank Zappa相关的词来命名他的许多包:Hunchentoot,Drakma等。

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

所以,直接的答案是否定的,没有一个共同的,商定的约定,每个人都使用。

答案 1 :(得分:7)

您有时会看到一种约定,即通过常规实现但非标准化功能提供精简兼容性包装的包通常称为TRIVIAL-SOMETHING

这会产生一些非常精彩的名称:以独立于实现的方式使用*FEATURES*的库称为TRIVIAL-FEATURES;更好的是,以标准化方式与垃圾收集器交互的库称为TRIVIAL-GARBAGE

答案 2 :(得分:4)

没有一般惯例,但有一些模式:

  1. 当库是来自其他语言,包装器或接口库的端口时,它通常以cl-为前缀,如cl-gtk2cl-ppcre。虽然有一段时间,当这个前缀被滥用,并且有很多包(例如cl-who),它们实现了一个独特的功能,但仍然使用它。
  2. 如果软件包是特定于实现的,那么它的前缀是实现速记(最值得注意的是:sb-),如sb-queuelw-compat
  3. 如果包是实现之间的兼容层,则通常以trivial-为前缀,如trivial-backtracetrivial-garbage
  4. 还有s-前缀,可能代表'符号',如s-xml,但它很少使用。
  5. 这些前缀有助于使包的名称唯一,从而简化在网络上查找有关它的信息。

    否则没有具体的约定,但一般规则是支持简短,唯一且可能是描述性的名称。出于易于记忆,使用和查找信息的原因。

    如果软件包恰好有一个长名称,那么提供一个较短的昵称很方便,因为通常情况下,人们会使用由其名称限定的软件包符号。例如,在我的代码中,我向re添加了一个昵称cl-ppcre,它使客户端代码更容易理解和清晰。虽然应该谨慎,但昵称不会引起名称冲突。