injective associated types?

1
2
3
4
5
6
7
-- | Models the conversion to CoreS.AST.
class ToCoreS t where
  -- | The corresponding data type in CoreS.AST.
  type Repr t :: *

  -- | Convert from S. The conversion is partial due to possible holes.
  toCoreS :: t -> CConv (Repr t)