| >I want to question the importance of soundness in type systems Why? The most common and popular opinion is already that it is not important. >Suppose you could catch 99% of type-based errors instead of 100%, and in addition, use a compiler switch to see all the case statements where a class of a type is missing. The intended benefit of this system is that it accepts all correct programs. That doesn't make sense. That's like saying suppose we had a system of math that gave the right answer 99% of the time. How would doing the wrong thing 1% of the time give you the benefit of accepting all correct programs? >The restrictive nature of static type systems today is legendary Mythological. Legends are supposed to have some historical root. >If you can't make your idea work with functors or typeclasses, chances are good there's no way to get it to compile and you have to write functions in longhand. What does that even mean? That's like saying "if you can't make your idea work with classes or inheritance, chances are good that there's no way to get it to compile and you have to write functions in longhand". |
Compiler enforced static typing rejects many correct programs, which is a disadvantage.