What that means from a coding point of view, is that we never know the automation rules at compile-time.
It’s like having a ‘Name’ field of type String, and then a runtime rule dictating the required first letter of the name.
The first-letter of a name restriction is a toy example but it demonstrates the fact that you have runtime configuration in one location, runtime data in the other, and no type-safety at compile-time to enforce that the right thing happens at runtime.
That’s exactly what I did and I was able to have my cake and eat it: the code is super fast and the entire “compilation” step is atomic and pure, meaning I don’t sacrifice FP.
With the possible exception of Haskell, writing a fast compiler means having lots of mutable state; and mutate state is exponentially harder to reason about and keep correct.