Portability | non-portable (GHC extensions) |
---|---|
Stability | experimental |
Maintainer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> |
This interpreter is meant to be a reference implementation of the semantics of the embedded array language. The emphasis is on defining the semantics clearly, not on performance.
Surface types versus representation types
As a general rule, we perform all computations on representation types and we store all data as values of representation types. To guarantee the type safety of the interpreter, this currently implies a lot of conversions between surface and representation types. Optimising the code by eliminating back and forth conversions is fine, but only where it doesn't negatively affects clarity after all, the main purpose of the interpreter is to serve as an executable specification.