我经常发现我正在使用带有一组相关模块的库,比如说:
A.B
A.B.C
A.B.D
我知道我能做到
import A.B (f1, f3)
import A.B.C (f7)
但有时这些函数有一些我不想用主要命名空间污染的常用名称。
所以我能做到:
import qualified A.B (f1, f3)
import qualified A.B.C (f7)
但是我必须调用像A.B.C.f7
这样很长的函数。
我能做到:
import qualified A.B as B
import qualified A.B.C as C
这有点帮助,但我仍然需要记住并指定我的功能是来自B还是C.
我发现你可以做到这一点:
import qualified A.B as B
import qualified A.B.C as B
除非A.B
和A.B.C
中的某个功能具有相同的名称并且您尝试使用它,否则您将收到编译错误。
所以我基本上想做的是:
import qualified A.B (f1, f3) as B
import qualified A.B.C (f7) as B
但这不会编译。这是可能的(可能有扩展),如果是这样的话?
答案 0 :(得分:5)
你快到了。尝试改为
import qualified A.B as B (f1, f3)
import qualified A.B.C as B (f7)
这可以在GHC中没有任何扩展。