Finally, enough of the engine has been reimplemented such that I was able to perform benchmarking again. The results don’t look good.
Functions are essential to any high level language. Without them, it’s very tedious (and error prone) to do anything. They may be disguised in various ways, being referred to as “sub-routines” or initiated using peculiar keywords like “def” and “defn”, but it’s all the same idea. The difference is often power.