You should also look at Liquid Haskell.