私はライブラリプロジェクトを持っていますが、特殊なモノモフィックコンテナはほとんどありません(主にセットとマップのようなもの)。それらはすべて、基本的なSet functioanality(空、シングルトン、挿入、共用など)を共有するだけでなく、付加価値固有の機能も持っています。それらのうちのいくつかはData.Setのラッパーであるが、他のものは有限のビットセットのようなより効率的な実装が必要である。1つのライブラリの複数の単体容器Haskell
ごとにこのような関数(emptyT、singletonU)の接尾辞を付けるの長所と短所は何ですか:私は2つの質問がありますか?単相性のすべてのコンテナ関数を接尾辞付きで区別することは、一般的なプラクティスになりますか?
ここにいくつかのサンプルコードがあります。
import qualified Data.Set as S data T = ... newtype TSet = TSet { unpack :: S.Set T } emptyT = TSet S.empty singletonT = TSet . S.singleton
これは、多型のコンテナを包み込むための正しい方法ですか?機能を "継承"するための巧妙な方法はありますか?カスタムのSet typeclassを作成することを考えましたが、ここでいくつかの記事を読んだ後には、複雑すぎることがわかりました。
私はお詫び申し上げます。ライブラリは、標準タイプの特殊なコンテナに関するものではありません。これは、ドメインXに有用なコードを書くためのもので、ドメインXに特化したデータ型T、U、V ...があり、標準ライブラリの文脈では役に立たない。 – lanskey