Sí, permitir la sobrecarga en los tipos de devolución complica un idioma. Esto complica la resolución de identificadores sobrecargados (por ejemplo, nombres de funciones). Pero no es imposible, p. Haskell permite sobrecargar la función según su tipo de devolución.
class Num a where
fromInteger :: Integer -> a
...
Num
es una clase de tipos en Haskell con un método llamado fromInteger
que es una función de un tamaño arbitrario Integer
a un tipo arbitrario, que tiene una instancia de Num
. El mecanismo de clase de tipo Haskell es bastante diferente del concepto de clase de lenguajes orientados a objetos. Por lo tanto, mi explicación puede sonar extraña.
Pero, el resultado es que puedo usar la función fromInteger y, dependiendo del contexto de la llamada, se ejecutan diferentes implementaciones en tiempo de compilación.
Existe toda una línea de investigación sobre sistemas tipo, que hizo posible esta función. Por lo tanto, diría que es factible en lenguajes tipados estáticamente. Los lenguajes con tipado dinámico requerirían viajes en el tiempo o algunas ideas inteligentes.
¿Has probado LISP? Si no lo intentas, podría solucionar tu problema. – Zinx
posible duplicado de [Función de sobrecarga por tipo de devolución?] (Http://stackoverflow.com/questions/442026/function-overloading-by-return-type) – nawfal