如何取消隐藏容器包中的Data.IntSet.Base模块

时间:2013-09-13 07:57:29

标签: haskell

我想编写一个直接在Data.IntSet'IntSet'数据类型上运行的函数。

查看hackage上的源代码IntSet正在导出(即顶部有一个IntSet(..))但是它是在Data.IntSet.Base中定义的,这是一个隐藏的模块:

Prelude> :m +Data.IntSet.Base

<no location info>:
    Could not find module `Data.IntSet.Base'
    it is a hidden module in the package `containers-0.5.0.0'
Prelude>

有什么方法可以取消隐藏吗?

我打算写一个函数:

match :: Int -> Mask -> IntSet -> IntSet

返回给定IntSet的子集,使所有元素都等于输入sans掩码。我无法看到使用导出的api有效地编写此函数(例如,使用过滤器或分区对于我想要使用的大型IntSet来说太慢了。)

显然我可以将源代码复制出容器包,但如果有更优雅的方式会很好。

1 个答案:

答案 0 :(得分:2)

显而易见的答案是,你不能以一般的方式。

如果您只是想要以不可移植的方式进行游戏,可以下载containers包(cabal unpack conntainers)并将模块移至cabal中的exposed-modules部分文件并重新安装包。