一个模块路径在require和initial-module-path里来引用模块。
(quote id)
模块路径是unix风格的。 /
是路径分隔符,..
指向父路径,.
指向相同的目录。模块路径不能以分隔符开始或者结束,如果没有后缀,默认用.rkt
结束。
模块路径是相对于当前目录,更准确的说,是相对于(current-load-relative-directory)。它的值在加载文件时设置。
如果相对路径用.ss
结尾,会自动转换成.rkt
结尾。这种方式是为了兼容旧代码。
没有使用引号的路径指向已经安装的库。它只能使用ASCII字符,数字,和+
,-
,_
,/
。分隔符分隔标识符,引用模块和子模块。
比如racket,他是路径racket/main的简写。当id没有/
,main自动添加上去。所以,racket和racket/main都指向racket集合的main.rkt文件。
(lib rel-string)
使用字符串来引用一个路径。.rkt
后缀也会自动添加。
(planet id)
访问planet服务器的第三方包。第三方包在第一次需要的时候被下载。
id被分隔符分割成多个部分。包作者/包名:可选版本/可选路径。
(planet package-string)
和符号形式类似,但是使用字符串作为标识符。
(planet rel-string (user-string pkg-string vers ...))
vers=nat
| (nat nat)
| (= nat)
| (+ nat)
| (- nat)
planent大完整形式。vers指定了版本越约束。如果没有指定,任何版本都可用。推荐至少指定一个版本。
(+ nat)指定当前版本或者之后版本
(start-nat end-nat)匹配范围
(= nat)指定版本
(- nat)指定之前版本
(submod base element ...+)
base = module-path
| "."
| ".."
element = id
| ".."
引用一个模块的子模块。.
指向当前路径,..
指向上级路径。
网友评论