Sorry, I know this litany of questions is annoying, but they are why this sort of thing isn’t so simple. It’s much more reasonable in Fortran since it is a static language with a separate type checking and compilation phase which is a natural time for the purity checking to happen. It is also a language without multimethods or dynamic dispatch, so any time a function call occurs, there is only one statically knowable function that can be called.
7 Likes