My understanding is that there is very little support for overloading in ML.
For instance, 'xs - i' means removing the element 'i' from the list 'xs' in the
code I showed. That is, '-' is given the following type in this case:
(list0(a), a) -> list0(a)
This is not possible in ML as '-' is given the type 'a * 'a -> 'a during type inference.
Also, dot-symbol overloading in ATS is not ML-like:
http://ats-lang.sourceforge.net/DOCUMENT/ATS2TUTORIAL/HTML/HTMLTOC/c260.htmlOverloading in ATS is completely ad-hoc. Basically, anything goes as long as the compiler
can figure out what is being overloaded based on the arity and type information.