hetmet_csp,
hetmet_flatten,
pga_flatten,
+ pga_unflatten,
pga_flattened_id,
GuestIntegerLiteral, guestIntegerLiteral,
GuestStringLiteral, guestStringLiteral,
hetmet_flatten ::
forall g .
- GArrowSTKC g (,) () =>
+ GArrowSTKC g =>
forall x y.
- <[ x -> y ]>@g
+ <[ y ]>@g
->
- (g x y)
+ (g (GArrowUnit g) y)
hetmet_flatten x = unG (pga_flatten x)
-- After the flattening pass the argument and result types of this
-- type-inference/checking:
pga_flatten ::
forall g x y.
- <[ x -> y ]>@g ->
- PGArrow g x y
+ <[ y ]>@g ->
+ PGArrow g (GArrowUnit g) y
pga_flatten = error "hetmet_flatten should never be evaluated; did you forget to compile with -fcoqpass?"
+pga_unflatten ::
+ forall g x y.
+ PGArrow g (GArrowUnit g) y ->
+ <[ y ]>@g
+pga_unflatten = error "hetmet_flatten should never be evaluated; did you forget to compile with -fcoqpass?"
pga_flattened_id ::
forall g x y.
- PGArrow g x y ->
- PGArrow g x y
+ PGArrow g (GArrowUnit g) y ->
+ PGArrow g (GArrowUnit g) y
pga_flattened_id x = x