型構成子とインスタンス

 インスタンスとは、型クラスにおいて要求されている関数を具体的に実装した「型」…であると思っていたのだが、「型構成子」でも良いそうだ。ここのところがなかなか飲み込めない。ディスパッチする関数を決定するという点においては、型構成子でも十分に決定に必要な情報を与えられるような気がする。そういう意味では、これで十分なのかもしれない。というか、どうせ型変数がくっついてても、推論の足しにはならないだろう。
 しかし、概念的な面での理解が足りないせいか、インスタンス宣言のところには型が来るべきなんじゃないかなぁ、という気がしてしまう。instance Monad Maybe where...じゃなく、instance Monad Maybe a where...という感じで。後者でもなんの不都合もない気がするんだが、なんで前者になってるのかな…。