制約を許可するためにすべてのベースタイプクラスを一般化するために制約キーを使用するライブラリはありますか?
-
12-12-2019 - |
質問
拡張制約分類を使用して、制約を許可するための基本タイプのクラスの機能を拡張できます。たとえば、ボックス化されていないベクトルをファンクタ:
にすることができます。class Functor f where
type FunctorConstraint f x :: Constraint
type FunctorConstraint f x = ()
fmap :: (FunctorConstraint f a, FunctorConstraint f b) => (a -> b) -> f a -> f b
instance Functor VU.Vector where
type FunctorConstraint VU.Vector x = VU.Unbox x
fmap = VU.map
.
この新しいスタイルの基本ライブラリタイプクラスのかなり大きな部分を実装することに気付いた(基本的には、ボックスベクトルやリストの間で互換的に互換的に取り組むことができます)、そしてこのためのライブラリがすでに存在するかどうか疑問に思っています。私は使うべきです、または私が肉を肉を磨くべきであるならば、それをハッカージに追加してください。
編集:また、これを直接ベースに追加する計画はありますか?クラス定義を直接更新するだけで、他のものを壊すべきではないようです。
解決
他の誰もがライブラリを持っていないように聞こえるので、私がConstraintkindsと呼ばれる別のプロジェクトと
所属していません StackOverflow