EExpr

A parsed Kernel-E expression.

Protocol
Compile the expression to an internal form (currently transformed E, but could be Java bytecode). The result is a Thunk which can be invoked to evaluate the code in the given environment.

The CompiledE is also useful if you want to debug the optimiser:

? def expr := e`def double (x) { return 2*x }` # value: e`def double { #             #            method run(x) { #               escape __return { #                   __return.run(2.multiply(x)) #                   null #               }  #            }  #        }`  ? expr.compile(safeScope) # value: compiled-e`def double { #             #            method run(x) { #               2.multiply(x) #           }  #        }`

Convenience method to compile and evaluate the expression in one go.