Erscheint mir auch logisch - anhand der Rückgabetypen überladen geht ja genausowenig.
Das nennt sich return type inference und ist keineswegs unlogisch. Kann aber durchaus komplex werden, wie Eric Lippert
hier und
hier erklärt.
Und Haskeller erst. Im Vergleich dazu ist auch die Inference in C# noch billig
Schon, aber eine funktionale mit einer objektorientierten Programmiersprache zu vergleichen hinkt schon ein bisschen