假设你有两个模块,比如
module Foo.A where
foo = 42
和
module Foo.B where
foo = 12
你想写一个超级模块
module Foo (
module Foo.A
, module Foo.B
) where
import Foo.A
import Foo.B
重新导出这些模块,你会得到一个名字冲突。
有解决方法吗?
答案 0 :(得分:26)
基本上没有。这是Gtk2hs作者等人们长期提出的功能要求。 Gtk2hs有一个非常广泛的模块层次结构,它可能对两者都有意义:
目前,如果您想要将多个模块重新出口,您可以做的只有:
答案 1 :(得分:11)
好问题。 Haskell报告addresses this:
导出列表是累积的:导出列表导出的实体集是由列表中各个项导出的实体的并集。
[...]
模块导出的实体的非限定名称必须全部不同(在各自的命名空间内)。
根据我有限的Haskell知识,我会说这是不可能的。