“Native object” implementation
Interpret object-language datatype constructors as JavaScript classes, values as instances of those classes, and the corresponding elimination forms as visitor objects that provide a classification callback for each constructor of the datatype.
Allows easier integration of our implementation with external libraries, and metavalues used internally by the interpreter (representing expressions, traces and so forth) to be freely used as object-language values with no reflection/reification overhead.