Data.IntSet 'IntSet' データ型を直接操作する関数を書きたいと思います。
ハックのソースを見ると、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
これは、すべての要素が入力 sans マスクと等しくなるように、指定された IntSet のサブセットを返します。エクスポートされた API を使用してこの関数を効率的に記述する方法はありません (たとえば、フィルターまたはパーティションを使用すると、処理したい大きな IntSet に対して遅すぎます)。
もちろん、コンテナ パッケージからソース コードをコピーすることもできますが、もっと洗練された方法があればいいのですが。