Generic instances of unboxed arrays with higher-kinded element types
A while ago we added support for generic instances like gEq{|{#Int}|}
. However, I can't find a good way to write an instance with a higher-kinded (but fully applied) element type (e.g. {#R Int}
with R x = {x :: x}
).
In this example program:
import StdEnv
import StdGeneric
import StdMaybe
generic gId a :: a -> a
:: R x = {x :: x}
gId{|{#R}|} x = x
Start = gId{|*|} {#{x=1}}
using gId{|{#R}|} x = x
fails with no instance available of type {#R Int}
, and using gId{|{#R Int|} x = x
fails with type constructor expected
, then crashes (no TypeCons
, in get_type_cons
in module parse).
Using :: T :== R Int
and gId{|T|} x = x
works, but should not be necessary.
CC @johnvg