The TransLucid interpreter is now ready for experimentation

The TransLucid interpreter, available at https://github.com/plaice/TLghc, has been significantly improved for version 0.0.3. There is now some documentation, along with an example TransLucid program.

The implementation of higher-order functions has been greatly simplified, and no longer needs the stack of pairs of environment and context that was described in the previous blog post. There is now a single environment and a single context. When a dimensionally abstract function is applied to a set of dimension actual parameters and a set of actual parameters in a given application environment-context pair, then for each actual parameter, a binding is created. This binding holds the actual parameter, the application environment, and the application context, adjusted so that, as the body of the function is evaluated, should any of the dimension formal parameters be perturbed, then the actual parameter will be evaluated with that changed context.

The paper presenting the semantics of TransLucid will soon be ready.