Copyright | [2008..2014] Manuel M T Chakravarty, Gabriele Keller [2008..2009] Sean Lee [2009..2014] Trevor L. McDonell |
---|---|
License | BSD3 |
Maintainer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell98 |
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.