From Why is OCaml's (+) not polymorphic?, Keith said:
The
+
versus+.
thing removes a lot of subtle bugs which can crop up in converting different sizes of integers, floats, and other numeric types back and forth. It also means that the compiler always knows exactly which numeric type is in use, thus making it easier to recognize when the programmer has made incorrect assumptions about a number always having an integer value. Requiring explicit casting between numeric types may seem awkward, but in the long run, it probably saves you more time tracking down weird bugs than you have to spend to write that extra period to be explicit.
ygrek also said:
you start to count for all other compromises that F# had to do in order to support this overloading.
Could someone please explain what were "a lot of subtle bugs" which existed in OCaml and what are "all compromises" which F# has to do beside inventing workaround statically resolved type?