A random sampling (with some overlap of already discussed issues):
* A less verbose syntax (want examples?) and less bizarre syntax :) Clearly subjective, but IMhO Haskell is a lot cleaner
* Constructors starts with uppercase, avoiding the issue the issue related to misspelled constructors (and allowing most editors highlight the constructor)
* Type-classes allow for sane overloading of functions and operands, solving the int/float problem of SML, but extending far beyond just that.
* As he mentions: the infix operator and the export from modules are both fixed in Haskell
* Supports binary numbers (sure, it's a trivial library issue, but possible because of type classes allow extending the concept of numbers)
* The polymorphic equality is solved in Haskell, again, with type classes, allowing us to define equality to any user defined type in a way that makes sense for it (including the set example)
* List concatenation is right associative (he mentions SML's left associative @ as a problem)
* SML's overflow on + problem are solved by not having overflow (j/k, Haskell lack of overflow on integers is a serious problem IMO, but other than making Int === Integer there's no easy solution).