Make PrimTyConI contain a type
When using Template Haskell to reify a primitive TyCon, GHC returns a structure containing the number of arguments and whether the saturated TyCon is unlifted.
data Info =
...
-- | A \"primitive\" type constructor, which can't be expressed with a 'Dec'.
-- Examples: @(->)@, @Int#@.
| PrimTyConI
Name
Arity
Unlifted
| ...
I propose to change this to PrimTyConI Name Type
.
This interface was written before levity and representation were on a solid ground. It does not say what is the representation of arguments (e.g. FUN
is special, !7299 (closed) adds levity-polymorphic arrays), what is the representation of the result (e.g. Int8#
and Int64#
are both unlifted but represented differently); the boolean cannot represent a levity-polymorphic result, if we ever have it.
This will be consistent with other constructors of Info
: ClassOpI
and DataConI
contains a Type
, PatSynI
contains a PatSynType
.