Haskell 转口合格-现在如何解决,有什么解决办法吗?
我的问题与这个问题中描述的完全相同 及Haskell 转口合格-现在如何解决,有什么解决办法吗?,haskell,module,Haskell,Module,我的问题与这个问题中描述的完全相同 及 module Foo.B where foo = 12 你想写一个超级模块 module Foo ( module Foo.A , module Foo.B ) where import Foo.A import Foo.B 如果重新导出这些模块,则会出现名称冲突 这是5年前提出的问题,我想从那时起可能会有一些变化。有没有?如果不是,那还没有解决办法 我做不/强>考虑透镜来解决它。 更新: 在每个模块(foo1、foo2
module Foo.B where
foo = 12
你想写一个超级模块
module Foo (
module Foo.A
, module Foo.B
) where
import Foo.A
import Foo.B
如果重新导出这些模块,则会出现名称冲突
这是5年前提出的问题,我想从那时起可能会有一些变化。有没有?如果不是,那还没有解决办法
<>我做<强>不/强>考虑透镜来解决它。
更新:
在每个模块(foo1、foo2等)中可以有很多函数foo
,我想从这两个模块中使用它们。毕竟,每个模块中也可能有具有相同成员名称的数据
所以隐藏不是解决办法 没有新的解决方案,但仍然有一个解决方案。
首先,由于只能导出一个foo
,因此您必须决定要将哪一个导出为裸foo
。然后你只需要隐藏另一个并给它取别名
module Foo (
module Foo.A
, module Foo.B
, bFoo
) where
import Foo.A
import Foo.B hiding (foo)
import qualified B as B
bFoo = B.foo
好的,这不是很优雅,但如果你真的必须的话,这是一个解决办法。首先,因为只有一个foo可以导出,所以你必须决定要导出哪一个作为裸foo-我想同时使用这两个,而且可以有很多。我的意思是,只有一个foo可以导出为裸foo
(无论何种语言)。我知道你想要A.foo
和B.foo
,但是两个不同的名字,没有一个是空的foo
。因此,您可以有一个foo
,但另一个需要有另一个名称(例如Bfoo
或B_foo
,因为B.foo
是不可能的)。但问题是如何将它们导入到限定的模块或其他模块中。>每个模块(foo1、foo2等)中都有大量的函数foo,我想从这两个模块中使用它们。毕竟,每个模块中也可能有具有相同成员名称的数据。如果真是这样,你不想隐瞒任何事情。唯一的解决方案是导入两个合格的模块,而不是尝试创建AB模块both@mb14,你到底是什么意思?FWIW,我觉得在老问题上加上“当前答案已经过时”的悬赏比问新问题更合适。
module Foo (
module Foo.A
, module Foo.B
, bFoo
) where
import Foo.A
import Foo.B hiding (foo)
import qualified B as B
bFoo = B.foo