私は現在、Learn you a Haskellの第8章にいますが、型クラスのセクションに到達しました。上記のセクションで、作成者は、さまざまな型をクラスのインスタンスにする方法の例を示します(たとえば、カスタム型など)。これを見て、私は(楽しみと練習のために)型のインスタンスを実装してみることにしました。もちろん、このすべてを無視します。FunctorMaybeTreeData.SetData.Set.map
実際のインスタンス自体は非常に単純で、次のように記述しました。
instance Functor Set.Set where
fmap f empty = Set.empty
fmap f s = Set.fromList $ map f (Set.elems s)
しかし、私はたまたまこの関数を使用しているので、コンパイラエラーで説明されているように、で使用fromListされる型を要求するクラス制約が発生します。SetOrd
Error occurred
ERROR line 4 - Cannot justify constraints in instance member binding
*** Expression : fmap
*** Type : Functor Set => (a -> b) -> Set a -> Set b
*** Given context : Functor Set
*** Constraints : Ord b
参照:実例
インスタンスに制約を設定するか、型シグネチャをに追加しようとしましたfmapが、どちらも成功しませんでした(どちらもコンパイラエラーでした)。
このような状況で、どのように制約を満たし、満たすことができますか?可能な方法はありますか?
前もって感謝します!:)