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