制約を許可するためにすべてのベースタイプクラスを一般化するために制約キーを使用するライブラリはありますか?

StackOverflow https://stackoverflow.com//questions/12697348

  •  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
.

href="https://dorchard.wordpress.com/2011/10/18/2011/10/18/subcategories-in-haskell-exofctors/ "rel=" noreferrer ">投稿詳細については

この新しいスタイルの基本ライブラリタイプクラスのかなり大きな部分を実装することに気付いた(基本的には、ボックスベクトルやリストの間で互換的に互換的に取り組むことができます)、そしてこのためのライブラリがすでに存在するかどうか疑問に思っています。私は使うべきです、または私が肉を肉を磨くべきであるならば、それをハッカージに追加してください。


編集:また、これを直接ベースに追加する計画はありますか?クラス定義を直接更新するだけで、他のものを壊すべきではないようです。

役に立ちましたか?

解決

他の誰もがライブラリを持っていないように聞こえるので、私がConstraintkindsと呼ばれる別のプロジェクトと

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top