如果它们在同一目录中,是否无法从另一个模块导入模块? (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 前缀。但是你不能在某些人身上有前缀,而在其他人身上却没有。你必须在任何地方都保持一致。每个模块名称基本上是从当前目录到源文件所在位置的文件路径。