| I've summarized my opinion on this here: https://doi.org/10.5281/zenodo.15118670 In normal programming languages, I see static type systems as a necessary evil: TypeScript is better than JavaScript, as long as you don't confuse types with terms... But in a logic, types are superfluous: You already have a notion of truth, and types just overcomplicate things. That doesn't mean that you cannot have mathematical objects x and A → B, such that x ∈ A → B, of course. Here you can indeed use terms instead of types. So in a logic, I think types represent a form of premature optimisation of the language that invariants are expressed in. |
[1] https://wiki.c2.com/?SufficientlySmartCompiler