A type-checker for Haskell with integer constraints