Eu não conheço todas as linguagens de programação, mas é claro que geralmente a possibilidade de sobrecarregar um método levando em consideração seu tipo de retorno (supondo que seus argumentos sejam o mesmo número e tipo) não é suportada.
Quero dizer algo como isto:
int method1 (int num)
{
}
long method1 (int num)
{
}
Não é que seja um grande problema de programação, mas em algumas ocasiões eu gostaria de recebê-lo.
Obviamente, não haveria como essas linguagens suportarem isso, sem uma maneira de diferenciar qual método está sendo chamado, mas a sintaxe para isso pode ser tão simples quanto algo como [int] method1 (num) ou [long] method1 (num) dessa forma, o compilador saberia qual seria o que seria chamado.
Não sei como os compiladores funcionam, mas isso não parece tão difícil de fazer, então me pergunto por que algo assim geralmente não é implementado.
Quais são as razões pelas quais algo assim não é suportado?
Foo
eBar
.