我想编写一个直接在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来说太慢了。)
显然我可以将源代码复制出容器包,但如果有更优雅的方式会很好。
答案 0 :(得分:2)
显而易见的答案是,你不能以一般的方式。
如果您只是想要以不可移植的方式进行游戏,可以下载containers
包(cabal unpack conntainers
)并将模块移至cabal中的exposed-modules
部分文件并重新安装包。