Haskell - 如何在同一个文件中使用多个模块?

时间:2011-08-03 06:15:11

标签: haskell module

对不起,这是一个愚蠢的问题,但我无法弄清楚如何将多个模块放在同一个文件中。假设文件名为 A.hs 。如果我先放置模块 B ,即

module B where ...
module A where ...

当我运行“ghci A”时,它会抱怨 A (它不是顶级的,所以我不想打电话给“ghci A.hs”)。反过来说,它抱怨“输入模块上的解析错误”。)

这里有一个相关的错误,http://hackage.haskell.org/trac/ghc/ticket/2428。实际上没有办法得到这个,即使其他模块只在本地使用吗?

2 个答案:

答案 0 :(得分:21)

您不能在同一个文件中拥有多个模块。您链接的错误只是GHC提供的错误消息,不清楚这一点。

但是,如果您使用的是Cabal,您仍然可以通过将您想要的模块放在Exposed-Modules部分中的用户,并将任何内部模块放在Other-Modules中来控制模块的可见性。

答案 1 :(得分:8)

我找到了以下bug report

这是指mailing list item,其中指出:

No, that's not possible because haskell will use the module name A.B.C to look the module up in path A/B/C.[l]hs.
So using modules
module A where
..
module B where
the compiler could only find one of them. (naming the file A.hs or B.hs)
You have to use one file for each module

所以,我猜答案是否定的。