¿Nombre para una función que devuelve sus argumentos?

34

Una función que no hace nada, no toma argumentos y no devuelve nada se llama tradicionalmente a noop, o no-op. A continuación se muestra un ejemplo de un noop:

function noop(){}

http://en.wikipedia.org/wiki/NOP

Entonces, ¿hay un nombre para una función que esté destinada solo a devolver sus argumentos y no hacer nada más? Un ejemplo de este tipo de función:

function(a){return a}
Code Whisperer
fuente
17
Para los votantes cercanos: Esta no es una pregunta basada en una opinión, hay una respuesta definitiva.
Daenyth
@Daenyth "También se conoce comúnmente como un paso" , probablemente no tan definitivo como parece
mosquito el
2
La transferencia de @gnat se utiliza para referirse a los métodos en una subclase que invocan un método principal sin cambiar los parámetros o lo que sea que devuelva el método principal. Pero el súper método puede devolver nada o algo completamente diferente. Devolver lo mismo que se pasa no es parte de la definición de una transferencia. Si lo hace, es solo porque el método padre específico lo hace. De hecho, los métodos de clase OO que no hacen más que devolver el mismo valor que se pasaron son extremadamente raros.
itsbruce
44
@Snowman Esa no es una declaración informada. En cualquier lenguaje que admita funciones de orden superior, que puede devolver una función que puede hacer algo arbitrario a una entrada dada, es muy útil poder devolver, en algunas circunstancias, una función que no cambia la entrada. Permite crear flujos de control con funciones en lugar de palabras clave. Al plegar sobre una lista (u otra estructura) para crear una función compuesta (como en el caso de las listas de diferencias), la función de identidad es a menudo el valor semilla natural.
itsbruce

Respuestas:

65

Se llama la función de identidad y a veces se abrevia como iden teoría de categorías y lenguajes de programación funcionales.

Doval
fuente
44
Aunque debe tenerse en cuenta que la mayoría de los programadores no tienen los antecedentes formales o el conocimiento de programación funcional para saberlo. También se conoce comúnmente como un paso a través.
Telastyn
55
He hecho muchas matemáticas formales, pero por alguna razón no recordé la respuesta hasta que vi esto y me palpé la cara.
Ixrec
55
@Telastyn Y en Java 8 todavía se llama "identidad". El nombre está desapareciendo de su fondo matemático / funcional y se está convirtiendo en el estándar.
Izkata
3
En efecto. Y el hecho de que tenga una raíz formal, combinada con la difusión del conocimiento del término, lo hace más útil que alguna jerga arbitraria y específica del idioma.
itsbruce
11
@Telastyn "pass through" casi siempre se usa en OO, refiriéndose específicamente a métodos que invocan el método de un padre sin cambiar los parámetros. Eso es más específico y limitado que el concepto de la función de identidad, sobre todo porque el método OO a menudo no devolverá nada más que el argumento, o algo completamente diferente. Entonces, si bien una transferencia devolverá lo mismo que el súper método, no es necesario devolver el argumento original. Estas son cosas diferentes.
itsbruce