我有一个像这样的目录结构
a
- a.hs
- b
-- b.hs
- c
-- c.hs
我想将c.hs导入b.hs但我无法弄清楚如何上一个目录并进入b。通常这会是../c/c.hs
。
Haskell的做法是什么?
答案 0 :(得分:1)
通常,您不会保存“仅代码”,而是保存模块module ModuleName where
。模块保存在反映模块名称的文件名和路径下,因此您将拥有文件ADirectory/A.hs
(请注意开头的大写字母),该文件以module ADirectory.A where
开头,与其他文件相同。
编写代码后,人们将模块收集到包中。
由于使用cabal-install
工具(或替代方法,stack
),有时会被称为“cabalization”,这可以通过cabal init
完成,并确保您的cabal文件列出每个模块。
文件ADirectory/A.hs
等内部模块可以导入其他模块。例如,A
可以通过B
导入import BDirectory.B
。
最后,如果还不是很明显,那么import语句指的是编译器必须已安装的模块。无法根据文件系统路径导入内容。