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

Rus*_*ell 20 lisp common-lisp

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

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

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

问候,

罗素

Xac*_*ach 20

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

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

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

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

  • 我个人不喜欢Lisp名字中的点. (3认同)

Pil*_*lsy 7

您有时会看到一种约定,即通常会调用常规实现但非标准化功能的瘦兼容包装程序包TRIVIAL-SOMETHING.

这导致了一些非常好的名字:用于以*FEATURES*独立于实现的方式工作的库被调用TRIVIAL-FEATURES; 更好的是,调用以标准化方式与垃圾收集器交互的库TRIVIAL-GARBAGE.


Vse*_*kin 5

没有一般约定,但有一些模式:

  1. 当库是来自其他语言、包装器或接口库的端口时,它通常以cl-cl-gtk2或为前缀cl-ppcre。虽然曾经有一段时间,当这个前缀被滥用时,有很多包(例如cl-who)实现了独特的功能,但仍然使用它。
  2. 如果包是特定于实现的,则它以实现速记(最值得注意的是:)为前缀sb-,例如sb-queuelw-compat
  3. 如果包是实现之间的兼容层,则通常以trivial-、 像trivial-backtracetrivial-garbage
  4. 还有s-前缀,可能代表“符号”,例如s-xml,但很少使用。

这些前缀有助于使包的名称具有唯一性,从而简化在 Web 上查找有关它的信息。

否则没有特定的约定,但一般规则是支持简短、唯一且可能是描述性的名称。为了便于记忆、使用和查找信息。

如果包碰巧有一个长名称,提供一个较短的昵称会很方便,因为通常情况下,人们会使用由他们的名称限定的包符号。例如,在我的代码添加一个昵称recl-ppcre,它使客户端代码更易于理解和清晰。尽管应该小心谨慎,以免昵称引起名称冲突。