マルチパラメーター型シノニムのクラス インスタンスを定義することが可能かどうか (およびその方法) を把握しようとしています。
例えば:
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
type F a b = a -> b
data DF a b = DF (a -> b)
class C c a b where
doc :: c a b -> a -> b
マルチパラメータ タイプのインスタンスで機能します。
instance C DF a b where
doc (DF f) x = f x
ただし、型シノニムでは機能しません。
-- ERROR:
--
-- Type synonym `F' should have 2 arguments, but has been given none
-- In the instance declaration for `C F a b'
--
instance C F a b where
doc f x = f x
の型クラス インスタンスを定義することは可能F
ですか?