什么是正确的方案文件扩展名?
What's the proper scheme file extension?
编程语言 Scheme 的文件按照惯例是扩展名 .scm
或 .ss
.
我对这些扩展的历史以及正确使用很感兴趣,尽管似乎普遍的态度是它只是你喜欢的任何东西,这无关紧要,但也许我错了。
没有合适的 Scheme 扩展。我浏览过R[567]RS,没有指定。
这是故意的,因为 Appendix F in a R6RS Non-Normative Appendices draft (PDF) 实际上有一部分是关于从库路径到文件路径的映射,但没有形成最终规范。
话虽如此,Scheme 程序最常见的文件扩展名是 .scm
,并且在 R6RS 和可能是 R7RS 中已经由实现者添加了其他扩展名以区分库和主程序。
事实上,实现唯一需要确保的是有一种方法可以 "install" 一个库,通常是一个需要映射到源代码中的库名称的文件。在 Racket 的 R6RS 中,这是通过安装程序完成的:
plt-r6rs --install test.xxx
[installing /home/westerp/.racket/6.4/collects/examples/hello.ss]
[Compiling /home/westerp/.racket/6.4/collects/examples/hello.ss]
所以实际上对于 racket 它毫无疑问地接受任何文件 name/extension,但是它使用 .ss
作为 R6RS 的扩展名并且它寻找 .sls
和 .scm
文件您也应该手动执行 plt-r6rs --install
手动执行的操作。
其他实现可能需要手动方式来安装库,但它仍然与 Scheme 语言无关,因为规范将这部分留给了实现来解决。
这是我所有 Scheme-related 文件扩展名的列表
遭遇。每次扩展后都是对其扩展的猜测
引号。如有错误或遗漏的信息,请评论。
Scheme 的常用扩展
.scm
("Scheme") -- 为R5RS、R6RS、
R7RS,或任何其他实施和标准。这是最
Scheme 源文件的常见且通常首选的扩展名。
.sps
("Scheme program source") -- 一个R6RS方案程序。不是
据我所知,与 .scm
确实不同,但我猜这是
扩展名表示该文件包含一个主程序,因此
它的名称可以传递给 Scheme 解释器 运行 程序。
.sls
("Scheme library source") -- 一个R6RS (library ...)
形式
其中包含接口声明和库
执行。您会在 Akku 中找到这些
包,例如。
.sld
("Scheme library definition") -- A R7RS
(define-library ...)
形式。该形式往往主要包含声明,使用 (include ...)
来包含库的实际 .scm
源文件。例如,您将把这些放在 Snow 包中。
Scheme-derived 种语言的扩展
.rkt
("Racket") -- 球拍源代码。球拍支持R6RS
Scheme,R7RS Scheme(通过一个third-party包),它自己的方言
(也称为 Racket)现在已经从 R6RS 扩展了很多,并且
相当多的语言与 Scheme 几乎没有关系。
每个 .rkt
文件都以 #lang racket/base
之类的行开始
该文件是用哪种语言编写的。
.scr
("Scribe") -- 用Scheme写的文本文件
抄写员,一个
本质上类似于 TeX/LaTeX 的标记语言,但以 Scheme 作为
宏语言。注意:原始的 Scribe 标记语言来自
1980 没有
使用方案。
.scrbl
("Scribble") -- 一个用 Scribble 写的文本文档,一个
现代版的 Scheme Scribe。涂鸦解释器已经
至少为 Racket 和 Chibi Scheme 实施。
Scheme 的罕见扩展
.ss
("Scheme source") -- 很少等同于 .scm
。在一些 R6RS 实现的源代码中发现。
.sc
("Scheme") -- 罕见等同于 .scm
.
.sch
("Scheme") -- 在 Larceny 实现的源代码中发现。
.sps7
("Scheme program source (R7RS)") -- 一个R7RS方案程序。在盗窃实施的源代码中发现。
编程语言 Scheme 的文件按照惯例是扩展名 .scm
或 .ss
.
我对这些扩展的历史以及正确使用很感兴趣,尽管似乎普遍的态度是它只是你喜欢的任何东西,这无关紧要,但也许我错了。
没有合适的 Scheme 扩展。我浏览过R[567]RS,没有指定。
这是故意的,因为 Appendix F in a R6RS Non-Normative Appendices draft (PDF) 实际上有一部分是关于从库路径到文件路径的映射,但没有形成最终规范。
话虽如此,Scheme 程序最常见的文件扩展名是 .scm
,并且在 R6RS 和可能是 R7RS 中已经由实现者添加了其他扩展名以区分库和主程序。
事实上,实现唯一需要确保的是有一种方法可以 "install" 一个库,通常是一个需要映射到源代码中的库名称的文件。在 Racket 的 R6RS 中,这是通过安装程序完成的:
plt-r6rs --install test.xxx
[installing /home/westerp/.racket/6.4/collects/examples/hello.ss]
[Compiling /home/westerp/.racket/6.4/collects/examples/hello.ss]
所以实际上对于 racket 它毫无疑问地接受任何文件 name/extension,但是它使用 .ss
作为 R6RS 的扩展名并且它寻找 .sls
和 .scm
文件您也应该手动执行 plt-r6rs --install
手动执行的操作。
其他实现可能需要手动方式来安装库,但它仍然与 Scheme 语言无关,因为规范将这部分留给了实现来解决。
这是我所有 Scheme-related 文件扩展名的列表 遭遇。每次扩展后都是对其扩展的猜测 引号。如有错误或遗漏的信息,请评论。
Scheme 的常用扩展
.scm
("Scheme") -- 为R5RS、R6RS、
R7RS,或任何其他实施和标准。这是最
Scheme 源文件的常见且通常首选的扩展名。
.sps
("Scheme program source") -- 一个R6RS方案程序。不是
据我所知,与 .scm
确实不同,但我猜这是
扩展名表示该文件包含一个主程序,因此
它的名称可以传递给 Scheme 解释器 运行 程序。
.sls
("Scheme library source") -- 一个R6RS (library ...)
形式
其中包含接口声明和库
执行。您会在 Akku 中找到这些
包,例如。
.sld
("Scheme library definition") -- A R7RS
(define-library ...)
形式。该形式往往主要包含声明,使用 (include ...)
来包含库的实际 .scm
源文件。例如,您将把这些放在 Snow 包中。
Scheme-derived 种语言的扩展
.rkt
("Racket") -- 球拍源代码。球拍支持R6RS
Scheme,R7RS Scheme(通过一个third-party包),它自己的方言
(也称为 Racket)现在已经从 R6RS 扩展了很多,并且
相当多的语言与 Scheme 几乎没有关系。
每个 .rkt
文件都以 #lang racket/base
之类的行开始
该文件是用哪种语言编写的。
.scr
("Scribe") -- 用Scheme写的文本文件
抄写员,一个
本质上类似于 TeX/LaTeX 的标记语言,但以 Scheme 作为
宏语言。注意:原始的 Scribe 标记语言来自
1980 没有
使用方案。
.scrbl
("Scribble") -- 一个用 Scribble 写的文本文档,一个
现代版的 Scheme Scribe。涂鸦解释器已经
至少为 Racket 和 Chibi Scheme 实施。
Scheme 的罕见扩展
.ss
("Scheme source") -- 很少等同于 .scm
。在一些 R6RS 实现的源代码中发现。
.sc
("Scheme") -- 罕见等同于 .scm
.
.sch
("Scheme") -- 在 Larceny 实现的源代码中发现。
.sps7
("Scheme program source (R7RS)") -- 一个R7RS方案程序。在盗窃实施的源代码中发现。