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