It&#x27;s not <i>that</i> strange.  We can write all kinds of program analyses that <i>are</i> decidable, but which are necessarily conservative, and we end up deciding what sort of conservativeness (which side we want to err on) in different situations.  What this does mean is that you can&#x27;t really write a Grand Unified Formal Verification framework and get some wonder-of-wonders benefit <i>just</i> by switching to functional programming.<p>I&#x27;ve also spent enough time around Haskell coders to notice that the instant you give them a fresh new language feature, they will push it right out to the limits where the compiler&#x27;s conservative analyses no longer work and the programmer has to manually assert that the code is correct.<p>Nothing will really save the programmer from having to think clearly about their own code, and most language features designed to ostensibly help do so just enable compiler-abuse at a higher level of abstraction.