什么是 Racket 中的模块路径索引
What is a Module Path Index in Racket
球拍有Module Paths (predicate is module-path?
), Resolved Module Paths (predicate is resolved-module-path?
), and Module Path Indexes(谓词是module-path-index?
)。
我猜 module-path?
是任何可能指向模块的东西。我想解析的模块路径指向系统上的实际模块。
但是什么是模块路径索引,它让我通过解析的模块路径得到了什么?
A module-path?
包含可以 require
d 的任何内容。可以是 path?
,可以是符号,可以是子模块路径 (submod "food.rkt" lunch)
。请参阅文档中的 require
。
A resolved-module-path?
是 "absolute path" 到 Racket 可以找到模块的地方(注 1)。已解析模块路径的语法比模块路径更受限制(即更明确)。
A module-path-index?
(MPI) 是从一个 module-path-index?
到另一个的增量 (注 2) .使用 module-path-index-join
构建 MPI(注 3)。
(module-path-index-join #f #f
) 是当前模块与其自身的增量。
(module-path-index-join "dumplings.rkt" #f)
是从 #f
(当前模块)到相对路径 "./dumplings.rkt"
的增量(是的,它确实是 path 首先,然后 base.)
(module-path-index-join "nom-noms.rkt" (module-path-index-join "dumplings.rkt" #f))
是从当前模块到 "./dumplings.rkt"
到 "./nom-noms.rkt"
的增量。当一个文件静态需要另一个文件时,Racket 会像这样构建 MPI——这些可以链接在一起以找到标识符的绑定。
(module-path-index-join '(submod test) #f)
指的是当前模块中的测试子模块。
希望对您有所帮助。
注意1:如果模块在文件中,则它的解析路径是绝对文件路径。如果模块是在语法对象上调用 eval
的结果,则它的 resolved-module-path?
是其他东西。
注 2:IMO "module path deltas" 会是一个更好的名称。
注意 3:当前两个参数为 #f
时,module-path-index-join
接受第三个可选参数。这让一个模块引用它自己的子模块之一。您通常不想直接使用此功能。而是使用 quote-module-path
.
球拍有Module Paths (predicate is module-path?
), Resolved Module Paths (predicate is resolved-module-path?
), and Module Path Indexes(谓词是module-path-index?
)。
我猜 module-path?
是任何可能指向模块的东西。我想解析的模块路径指向系统上的实际模块。
但是什么是模块路径索引,它让我通过解析的模块路径得到了什么?
A module-path?
包含可以 require
d 的任何内容。可以是 path?
,可以是符号,可以是子模块路径 (submod "food.rkt" lunch)
。请参阅文档中的 require
。
A resolved-module-path?
是 "absolute path" 到 Racket 可以找到模块的地方(注 1)。已解析模块路径的语法比模块路径更受限制(即更明确)。
A module-path-index?
(MPI) 是从一个 module-path-index?
到另一个的增量 (注 2) .使用 module-path-index-join
构建 MPI(注 3)。
(module-path-index-join #f #f
) 是当前模块与其自身的增量。(module-path-index-join "dumplings.rkt" #f)
是从#f
(当前模块)到相对路径"./dumplings.rkt"
的增量(是的,它确实是 path 首先,然后 base.)(module-path-index-join "nom-noms.rkt" (module-path-index-join "dumplings.rkt" #f))
是从当前模块到"./dumplings.rkt"
到"./nom-noms.rkt"
的增量。当一个文件静态需要另一个文件时,Racket 会像这样构建 MPI——这些可以链接在一起以找到标识符的绑定。(module-path-index-join '(submod test) #f)
指的是当前模块中的测试子模块。
希望对您有所帮助。
注意1:如果模块在文件中,则它的解析路径是绝对文件路径。如果模块是在语法对象上调用 eval
的结果,则它的 resolved-module-path?
是其他东西。
注 2:IMO "module path deltas" 会是一个更好的名称。
注意 3:当前两个参数为 #f
时,module-path-index-join
接受第三个可选参数。这让一个模块引用它自己的子模块之一。您通常不想直接使用此功能。而是使用 quote-module-path
.