为了演示我的问题,我创建了一个这样的测试项目 - >
目录“Data”只有2个模块,即“Test3.hs”和“Test4.hs”。它们是用于测试目的的空模块。 (实现:“模块Data.Test3在哪里”)
“Test1.hs”导入所有这样的模块 - >
这会导致错误 - >
我正在使用WinGHCi导入模块,这会自动将目录更改为“cd:〜\ .hs”。
我还尝试使用GHCi并手动更改目录来导入模块。但结果与上面的结果相同。
所以我得出结论,没有办法从同一目录导入你自己的模块,你必须始终只为此目的创建子目录。
是对的吗?
您需要确定根目录的位置,从该目录运行GHCi,然后一致地命名相对于同一目录的所有模块。
您需要在模块声明(module Foo where...
)和import语句(import Foo
)中一致地命名模块。
所以你需要:
module Test.Test1 where
import Test.Data.Test3
import Test.Data.Test4
import Test.Test2
或者从Test
内部运行GHCi并删除所有Test
前缀。但你不能在某些人身上拥有前缀,而在其他人身上则不能。你必须在任何地方保持一致。每个模块名称基本上是从当前目录到源文件所在的文件路径。