- | OpenDataTyCon -- data family (further instances can appear
- | OpenNewTyCon -- newtype family at any time)
+ -- We know nothing about this data type, except that it's represented by a
+ -- pointer. Used when we export a data type abstractly into an hi file.
+ --
+ = AbstractTyCon
+
+ -- The constructor represents an open family without a fixed right hand
+ -- side. Additional instances can appear at any time.
+ --
+ | OpenTyCon {
+
+ otArgPoss :: Maybe [Int],
+ -- for associated families: for each tyvar in the AT decl, gives the
+ -- position of that tyvar in the class argument list (starting from 0).
+ -- NB: Length is less than tyConArity iff higher kind signature.
+ -- NB: Just _ <=> associated (not toplevel) family
+
+ otIsNewtype :: Bool
+ -- is a newtype (rather than data type)?
+
+ }