Nom pour une fonction qui retourne ses arguments?

34

Une fonction qui ne fait rien, ne prend aucun argument et ne renvoie rien est traditionnellement appelée un noop, ou no-op. Un exemple de noop est ci-dessous:

function noop(){}

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

Existe-t-il donc un nom pour une fonction destinée uniquement à renvoyer ses arguments, et ne rien faire d'autre? Un exemple de ce type de fonction:

function(a){return a}
Code Whisperer
la source
17
Pour les électeurs proches: Ce n'est pas une question d'opinion, il y a une réponse définitive.
Daenyth
@Daenyth "C'est aussi connu sous le nom de pass-through" - probablement pas aussi définitif qu'il y paraît
moucheron
2
@gnat pass-through est utilisé pour faire référence aux méthodes d'une sous-classe qui invoquent une méthode parente sans modifier les paramètres ni quoi que retourne la méthode parente. Mais la super méthode peut ne rien renvoyer ou quelque chose de complètement différent. Retourner la même chose transmise ne fait pas partie de la définition de la transmission. Si c'est le cas, c'est uniquement parce que la méthode parente spécifique le fait. En fait, les méthodes de classe OO qui ne renvoient que la même valeur qu’elles ont été transmises sont extrêmement rares.
Itsbruce
4
@Snowman Ce n'est pas une déclaration éclairée. Dans toutes les langues qui prennent en charge les fonctions d'ordre supérieur, qui peuvent renvoyer une fonction pouvant effectuer n'importe quelle opération arbitraire sur une entrée donnée, il est très utile de pouvoir renvoyer, dans certaines circonstances, une fonction qui ne modifie pas l'entrée. Il permet de créer des flux de contrôle avec des fonctions plutôt que des mots-clés. Lorsque vous repliez une liste (ou une autre structure) pour créer une fonction composée (comme dans le cas des listes de différences), la fonction identité est souvent la valeur de départ naturelle.
Itsbruce

Réponses:

65

C'est ce qu'on appelle la fonction d'identité et est parfois abrégé comme iddans la théorie des catégories et les langages de programmation fonctionnels.

Doval
la source
4
Cependant, il convient de noter que la plupart des programmeurs n’ont pas l’expérience formelle ni les connaissances nécessaires en programmation fonctionnelle pour le savoir. C'est aussi communément appelé un pass-through.
Telastyn
5
J'ai fait beaucoup de maths formels, mais pour une raison quelconque, je ne me souvenais pas de la réponse avant de l'avoir vue et d'avoir pris soin de moi.
Ixrec
5
@ Telastyn Et en Java 8, on l'appelle encore "identité". Le nom s'affaiblit et devient la norme.
Izkata
3
Effectivement. Et le fait qu’il ait une racine formelle, associée à une prise de conscience croissante du terme, le rend plus utile que certains jargons arbitraires spécifiques à une langue.
Itsbruce
11
@Telastyn "pass through" est presque toujours utilisé dans OO en faisant spécifiquement référence à des méthodes qui invoquent une méthode parent sans modifier les paramètres. C'est à la fois plus spécifique et limité que le concept de fonction d'identité, notamment parce que la méthode OO ne retourne souvent rien, sinon l'argument - ou quelque chose de totalement différent. Ainsi, bien qu'une pass-through retourne la même chose que la super méthode, il n'est pas du tout nécessaire de renvoyer l'argument d'origine. Ce sont des choses différentes.
Itsbruce