我想编写一个直接对 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 的子集,使得所有元素都等于输入无掩码。我无法看到使用导出的 api 有效地编写此函数(例如,对于我想要使用的大型 IntSet,使用过滤器或分区会太慢)。
显然我可以从容器包中复制源代码,但如果有更优雅的方式会很好。