I don't find overloading much of a problem for SML. What I would like would be the simple idea of `f` being infix f, and the requirement that constructors were lexically distinct (starting with a capital for Haskell).