Though make the type system sufficiently more expressive than Haskell's and you have to give up on type inference again...
Though maybe you could restrict how expressive the type system is on something like a module (Haskell module) level, so that you can have type inference if you give up on some power? I don't know.