1

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 に対して遅すぎます)。

もちろん、コンテナ パッケージからソース コードをコピーすることもできますが、もっと洗練された方法があればいいのですが。

4

1 に答える 1

2

明白な答えは、一般的な方法ではできないということです。

それを (移植性のない方法で) 試してみたい場合は、containersパッケージ ( cabal unpack conntainers) をダウンロードし、モジュールをexposed-modulescabal ファイルのセクションに移動して、パッケージを再インストールします。

于 2013-09-13T10:29:06.767 に答える