Continuing on from ideas in: Are there any provable real-world languages?
I don\'t know about you, but I\'m sick of writing code that I can\'t guarantee.
The tool AProVE is (at least) able to prove termination of Haskell programs, which is part of proving correctness. More information can be found in this paper (shorter version).
Apart from that, you might be interested in Dependent Types. Here, the type system is extended and used to make wrong programs impossible.