Now, in order to get to a smaller code size. What about writing the step function in threaded code? Does this make at all sense? I don't think so: the features that are used to write the interpreter are GC's vector construct (library) and C lexical scope and C structure member scope. It's rather awkward to write something like that in a combinator language.