(This is a change in policy for codegen, and I'm not precisely sure what the current state of affairs is.) If we have a length polymorphic function
fun foo(arr int x, arr[length(x)] bool y) { .. }
which gets translated to an internal type like
fun foo(arr[_r] int x, arr[_r] bool y) { .. }
then these length type variables _r should remain type variables (rather than be reified as proper term variables that we can pass around as arguments or return as results) until the translation to C. This keeps type checking of internal code a lot clearer.
(This is a change in policy for codegen, and I'm not precisely sure what the current state of affairs is.) If we have a length polymorphic function
which gets translated to an internal type like
then these length type variables
_r
should remain type variables (rather than be reified as proper term variables that we can pass around as arguments or return as results) until the translation to C. This keeps type checking of internal code a lot clearer.