对不起,这是一个愚蠢的问题,但我无法弄清楚如何将多个模块放在同一个文件中。假设文件名为 A.hs 。如果我先放置模块 B ,即
module B where ...
module A where ...
当我运行“ghci A”时,它会抱怨 A (它不是顶级的,所以我不想打电话给“ghci A.hs”)。反过来说,它抱怨“输入模块上的解析错误”。)
这里有一个相关的错误,http://hackage.haskell.org/trac/ghc/ticket/2428。实际上没有办法得到这个,即使其他模块只在本地使用吗?
答案 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
所以,我猜答案是否定的。