6.3模块路径

一个模块路径在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
    |       ".."

引用一个模块的子模块。.指向当前路径,..指向上级路径。

你可能感兴趣的:(6.3模块路径)