You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scheme库命名有哪些通用约定?可否使用反向域名表示法?

Scheme 库通用命名约定说明

R7RS 标准中定义的库名是符号列表结构,因此你提到的两种反向域名写法里,(define-library (com example mylib) ...)这种用空格分隔各段的写法是跨实现通用的标准写法;(define-library (com.example.mylib) ...)带点的写法属于部分Scheme实现(如Guile、Chez Scheme)的兼容扩展,不保证所有实现都支持,优先选空格分隔的写法兼容性更好。

除了你提到的禁止用scheme、srfi作为首个标识符之外,还有这些通用命名指导规则:

  • 前缀唯一性优先:反向域名是非常成熟的前缀实践,没有域名的话也可以用你常用的全网唯一用户名、项目所属组织的唯一标识作为首段,核心目标是避免和其他开发者的库重名。不要用util、core、common这类泛用词汇作为首段,冲突概率极高。
  • 规避保留前缀:不要用各个Scheme实现的名称作为首段,比如guile、racket、chez、chibi等,这类前缀是各实现官方内置库的保留前缀,自定义库使用可能会产生加载冲突。
  • 标识符格式统一:库名的每一段都统一使用全小写,单词之间用短横线-分隔,不要使用驼峰命名、下划线或其他特殊字符,符合Lisp生态的通用命名习惯,比如(com example my-test-lib)是符合规范的写法,不要写(com Example my_test_lib)。
  • 层级逻辑清晰:库名的层级从大到小排列,顺序为「全局唯一前缀 → 项目名 → 子模块名」,如果是大项目的子库,要和主库的前缀保持一致,比如主库是(com example mylib),网络相关子库就命名为(com example mylib net),工具算子库命名为(com example mylib utils),不要随意跳过硬插层级。
  • 避免特殊含义字符:不要在库名各段中使用.、/、\这类有特殊解析含义的字符,避免部分实现解析库名对应文件路径时出错。

内容的提问来源于stack exchange,提问作者Flux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:03