Haskellのtype演算子に型シノニム以外の使い方はありますか?
最近Haskellの勉強を初めて,適当にライブラリを読んでいるのですが,type演算子の用途について疑問があります.
例えば,以下の例ですと右辺がなく,何のシノニムになっているのか分かりません.
https://github.com/RaphaelJ/friday/blob/master/src/Vision/Image/Class.hs#L93
class Storable (ImagePixel i) => MaskedImage i where
type ImagePixel i
また,以下の例では,左辺 ImagePixel (Manifest p) のほうが,右辺 p よりも複雑になっていて,
シノニムを使う理由がよく分かりません.
https://github.com/RaphaelJ/friday/blob/master/src/Vision/Image/Type.hs#L52
instance Storable p => MaskedImage (Manifest p) where
type ImagePixel (Manifest p) = p
type演算子には,型シノニム以外の使い方があるのでしょうか?