We agree incremental use of global type inference algorithms is non-function.
But I am also saying you don't need to do that. Certainly don't need type-inference in the case where the ASTs are typed by construction. And the syntax directed algorithms can also infer somewhat.
You can also alternatively cache the result of global inference, which sucks for refactoring but preserves purity.
You will need type inference if you want any sort of non local communication...e.g. variables that hold different values or functions. But ya, if your language is just pure trees with no names or symbol tabkes, you don't need it; not very useful, however.
But I am also saying you don't need to do that. Certainly don't need type-inference in the case where the ASTs are typed by construction. And the syntax directed algorithms can also infer somewhat.
You can also alternatively cache the result of global inference, which sucks for refactoring but preserves purity.