我的理解是,在 Haskell 中,模块的点语法表示磁盘上的逻辑结构。所以,如果我们有这样的结构:
Main.hs
Foo/
Bar.hs -- exports "Bar"
Quux.hs -- exports "Quux"
...然后在我们的 中Main.hs
,我们可以这样做:
import Foo.Bar
import Foo.Quux
(我假设我们只能在文件系统的叶节点上拥有模块。例如,在上面,我们也无法拥有Foo
模块。)
在此示例中,我们正在遍历树。如果我们想上去怎么办?
lib/
SomeModule.hs
XYZ.hs
src/
Main.hs
也就是说,在 中Main.hs
,我们如何导入SomeModule
or XYZ
?
也许这不会是常见的情况Main
,但是模块间的依赖关系呢?他们可能合法地需要引用“表亲”节点。