如果它们在同一目录中,是否无法从另一个模块导入模块? (Haskell)
Is it not possible to import modules from another module if they are in the same dir? (Haskell)
为了证明我的问题,我创建了一个这样的测试项目 ->
目录"Data"只有2个模块,即"Test3.hs"和"Test4.hs"。它们是用于测试目的的空模块。 (实施:"module Data.Test3 where")
"Test1.hs" 像这样导入所有模块 ->
这会导致错误 ->
我正在使用 WinGHCi 导入模块,它会自动将目录更改为 "cd: ~\.hs"。
我还尝试使用 GHCi 和手动更改目录来导入模块。但是结果和上面一样。
所以我得出结论,没有办法从同一目录导入您自己的模块,您必须始终为此目的创建子目录。
对吗?
你需要决定你的根目录在哪里,运行 GHCi 来自那个目录,然后一致地命名你所有的模块相对于同一个目录。
您需要在模块声明 (module Foo where...
) 和导入语句 (import Foo
) 中 一致地命名您的模块。
所以你需要其中之一:
module Test.Test1 where
import Test.Data.Test3
import Test.Data.Test4
import Test.Test2
或 运行 GHCi 来自 Test
并删除所有 Test
前缀。但是你不能在某些人身上有前缀,而在其他人身上却没有。你必须在任何地方都保持一致。每个模块名称基本上是从当前目录到源文件所在位置的文件路径。
为了证明我的问题,我创建了一个这样的测试项目 ->
目录"Data"只有2个模块,即"Test3.hs"和"Test4.hs"。它们是用于测试目的的空模块。 (实施:"module Data.Test3 where")
"Test1.hs" 像这样导入所有模块 ->
这会导致错误 ->
我正在使用 WinGHCi 导入模块,它会自动将目录更改为 "cd: ~\.hs"。
我还尝试使用 GHCi 和手动更改目录来导入模块。但是结果和上面一样。
所以我得出结论,没有办法从同一目录导入您自己的模块,您必须始终为此目的创建子目录。
对吗?
你需要决定你的根目录在哪里,运行 GHCi 来自那个目录,然后一致地命名你所有的模块相对于同一个目录。
您需要在模块声明 (module Foo where...
) 和导入语句 (import Foo
) 中 一致地命名您的模块。
所以你需要其中之一:
module Test.Test1 where
import Test.Data.Test3
import Test.Data.Test4
import Test.Test2
或 运行 GHCi 来自 Test
并删除所有 Test
前缀。但是你不能在某些人身上有前缀,而在其他人身上却没有。你必须在任何地方都保持一致。每个模块名称基本上是从当前目录到源文件所在位置的文件路径。