Tengo curiosidad por saber si una función puede tomar a sí misma como argumento o devolverse a sí misma. Es decir: ¿Existe una función $f$ tal que $f() = f$ ? O quizás de forma menos confusa si no estás acostumbrado a las funciones que no toman argumentos: ¿Existe una función $f$ y un objeto $x$ tal que $f(x) = f$ ? Para dejarlo aún más claro: Esto implicaría que $(f(x))(x) = f(x) = f$ .
Por favor, no confunda esto con algo como $\text{id}(\text{id}(5))$ . Lo que ocurre aquí es que la función exterior (llamada a la)* identidad toma como argumento el resultado de la función interior (llamada a la)* identidad, no la propia función identidad.
* No tengo ni idea de cómo los matemáticos podrían decir esto. Demasiada informática y poca matemática ;-) Sin embargo, estaría bien que lo dejaras caer, para que pueda aprender sobre la terminología matemática.
2 votos
Estoy bastante seguro de que esto es imposible en la teoría de conjuntos.
8 votos
Esto es definitivamente posible en Python y Javascript.
def f(): return f
1 votos
¿No depende la prueba del Problema de Halting de que esto sea posible?
2 votos
@UTF-8 Me pregunto cuál es la motivación de esta pregunta. Si la respuesta fuera afirmativa, ¿cómo se utilizaría ese resultado? En cuanto a la expresión "llamar a la", primero podría ser útil considerar que "llamar a una función" es un artefacto de los lenguajes procedimentales. Es una instrucción, no una igualdad. En el artículo sobre funciones de la Wikipedia, se utilizan términos como "valor de una función con la entrada x". Usando ese modelo se podría decir que el valor de $id$ con el argumento $id(5)$ o el valor de $id$ con el argumento que es el valor de $id$ con el argumento 5. Sin embargo, es muy complicado: "llamar" o "invocar" es suficientemente claro.
0 votos
@MasonWheeler No. Las funciones implicadas no toman como entradas otras funciones, sino sus índices en sone ordenación (o descripciones, lo que te convenga).
0 votos
@ChrisChudzicki Sé que es posible en muchos lenguajes de programación. Pero las funciones en informática son totalmente diferentes a las funciones en matemáticas. Hice esta pregunta en math.stackexchange.com así que cuando hablo de una función en ella, me refiero a una función matemática. Si hiciera una pregunta en cualquier StackExchange relacionado con la informática, una función sería algo diferente (y llamaría funciones matemáticas a las funciones de las que hablo aquí).
0 votos
@p Tuve una extraña contradicción (o más bien encontré una incoherencia en las matemáticas bajo ciertos supuestos) y quise encontrar la parte defectuosa. Resulta que no se pueden tener funciones que se devuelvan a sí mismas en matemáticas.
0 votos
@UTF-8: Puede que quieras echar un vistazo a Teoría del dominio - es un marco matemático diseñado para modelar "funciones" (tal como las entiende la informática), y dentro de ese marco es posible que una función se aplique a sí misma.
0 votos
¿La función de identidad en el espacio de las funciones valoradas? $id(id) = id$
1 votos
@UTF-8 Merece la pena señalar que las "matemáticas" no prohíben que una función se devuelva a sí misma, sino que lo hace la teoría de conjuntos ZFC. Hay otras teorías de conjuntos, incluida la "teoría ingenua de conjuntos", creada por Cantor. Las inconsistencias de la teoría de conjuntos ingenua llevaron al desarrollo de alternativas como ZFC. Sin embargo, a pesar de sus incoherencias, la teoría ingenua de conjuntos se sigue utilizando y enseñando. Por lo tanto, se tiene un menú de teorías de conjuntos con varias compensaciones.
0 votos
@jdm Podrías hacer una pregunta sobre esto.