Scala does that because ad hoc polymorphism doesnt resolve well with hindley milner type inference. F# also has this limitation and they get some of the way around this with a strict vertical projects file layout. The scope of its type inference is a middle ground between Scala and Ocaml which I think is a nice optimum, you leave most things untyped except the overloads which can't be determined so that the eager generalization you encounter in ocaml is less of a problem there too. The price in project layout is quite steep though but like in all things you train your self around it.
Plus with an IDE in Scala (or F#) you can just hover for the types.