Thomas y Dan ya han escrito una excelente respuesta, pero me gustaría responder desde un punto de vista diferente: La identidad conceptual y el uso.
Si tienes una manzana y una naranja, son dos cosas. Sabes cuál es cuál porque conoces sus nombres y lo "sientes". Es lo mismo que ocurre con los símbolos en matemáticas: si defines que X es f(foo) e Y es g(bar), puedes distinguirlos.
Por otro lado, si no se les asigna ninguna "identidad" y se los trata a todos como un grupo (es decir, un conjunto), entonces se tiene un grupo de frutas (manzana,naranja) y un grupo de funciones (f,g). Sin embargo, observa que a pesar de que los elementos pierden su identidad, ahora el el grupo tiene identidad . Le has puesto nombre para poder localizarlo y operarlo.
Estoy bastante seguro de que las funciones se definieron para devolver un solo resultado, porque esta es la forma más mínima de proporcionar su función sin requisitos de colocación sobre cómo definir las identidades de las "cosas resultantes".
Si tu función devolviera una cosa (sqrt(9): 3) - bueno, es obvio.
Si su función devuelve muchas cosas no identificables por sí mismas (así sqrt_1(9) da como resultado -3 y 3 en orden aleatorio ) - ¡supongamos que sí! Su función devuelve ahora una bolsa de elementos, en orden aleatorio. ¿Cómo los operaría/procesaría/analizaría más tarde? Seguramente, no son identificables, te será difícil referirte a uno u otro. Pero bueno, hay la bolsa . Puedes coger la bolsa resultante y analizar su contenido. Pero ahora fíjate en el cambio: estás identificando, refiriendo y analizando la bolsa . Su función devolvió X cosas y todavía se refiere a una: la bolsa.
Pero eso fue bajo el supuesto de que los resultados devueltos no tienen nombre, no son identificables por sí mismos. Ahora supongamos que esa función produce llamado resultados identificables (así sqrt_2(9) devuelve "raíz negativa: -3" y "raíz positiva: 3" (ignoremos el cero o el imaginario..)). Ahora puedes referirte a ellos por separado y fácilmente. ¿De verdad? No. Sigues necesitando la bolsa, porque sqrt2(25) y sqrt(9) dan como resultado diferentes raíces positivas y diferentes raíces negativas. Así que para poder referirse a ellos, primero debes decir que estás considerando sqrt(25) y sólo entonces puedes referirte a la raíz positiva y encontrarla igual a 5.
Esto significa:
sqrt(9) -> 3
sqrt(9) -> {3, -3}
sqrt(9) -> {positive: 3, negative: -3}
Pero todas ellas son, de hecho, cosas singulares:
one thing: a number
one thing: a set of numbers
one thing: a set of name-number pairs (mappings, relations, whatever you call it)
sin mencionar que la función también puede resultar en una función (ver funciones de orden superior).
Lo que quiero decir es que, incluso si encuentras alguna manera de hacerlo inteligente y tratas de redefinir una "función" o "funion" para que devuelva múltiples valores, o lo que sea, todavía terminas teniendo realmente un resultado a la vez.
Esto se debe a que la suposición/noción de "tener un resultado" lo implica. Para unos parámetros dados, tienes un valor. O un conjunto de ellos. Pero de cualquier manera sigue siendo un resultado. La noción de "tener un resultado" es tan básica y tan abstracta, que simplemente es difícil generalizarla y ampliarla más.