如果它们在同一个目录中,是否无法从另一个模块导入模块? (Haskell的)

问题描述 投票:-1回答:1

为了演示我的问题,我创建了一个这样的测试项目 - >

enter image description here

目录“Data”只有2个模块,即“Test3.hs”和“Test4.hs”。它们是用于测试目的的空模块。 (实现:“模块Data.Test3在哪里”)

“Test1.hs”导入所有这样的模块 - >

enter image description here

这会导致错误 - >

enter image description here

我正在使用WinGHCi导入模块,这会自动将目录更改为“cd:〜\ .hs”。

我还尝试使用GHCi并手动更改目录来导入模块。但结果与上面的结果相同。

所以我得出结论,没有办法从同一目录导入你自己的模块,你必须始终只为此目的创建子目录。

是对的吗?

haskell ghc ghci haskell-platform winghci
1个回答
3
投票

您需要确定根目录的位置,从该目录运行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前缀。但你不能在某些人身上拥有前缀,而在其他人身上则不能。你必须在任何地方保持一致。每个模块名称基本上是从当前目录到源文件所在的文件路径。

© www.soinside.com 2019 - 2024. All rights reserved.