This is a restriction of the Accelerate semantics. It sounds like we are ok with having the Racket frontend be more restrictive than the GPU backend.
Longer term, we can either generate conditionals in the accelerate DFG to enforce this, or we can relax the semantics in the frontend. (Otherwise it would break the gradual guarantee we eventually want to have.)
OR we could just have zipWith expand into "check-sizes-then-zipWith" within some teaching language. This should be easy to do (later) once everything is in place.
This is a restriction of the Accelerate semantics. It sounds like we are ok with having the Racket frontend be more restrictive than the GPU backend.
Longer term, we can either generate conditionals in the accelerate DFG to enforce this, or we can relax the semantics in the frontend. (Otherwise it would break the gradual guarantee we eventually want to have.)
OR we could just have zipWith expand into "check-sizes-then-zipWith" within some teaching language. This should be easy to do (later) once everything is in place.