human
Qu'est-ce que le lamda (en informatique) ? J'ai fait de la programmation , et je suis tombé sur ce truc ' lamda ' . Je pense que c'est une fonction , comme sin / tan , mais je ne peux pas en être sûr . Merci ! Explique comme si j'avais cinq ans.
gpt
Lambda n'est pas une fonction ; c'est une notation pour écrire des fonctions. Cela vient des mathématiques, mais ce n'est pas très courant dans la plupart des mathématiques, juste dans quelques branches comme la logique et l'informatique. Si vous avez suivi des cours de mathématiques comme la trigonométrie , vous avez peut-être vu la notation mathématique qui définit des fonctions comme celle-ci : * f(x ) = x^2 + 3x - 1 Cela définit une fonction appelée " f " . Ensuite, lorsque vous utilisez la définition de la fonction, vous écrivez des choses comme ceci : * f(5 ) = 39 En notation lambda, vous pouvez définir cette fonction comme ceci : * λx . x^2 + 3x - 1 " λ " est la lettre grecque lambda . Tout ce que la lettre signifie dans cette notation est « ce qui suit est une fonction ». Le x est la variable qui représente l'argument de la fonction. Le point sépare le symbole lambda et la variable du corps de la fonction — qui est le reste de la ligne. Notez que la définition de style lambda ne contient pas la lettre « f ». C'est parce que le but de la notation lambda est qu'elle sépare l'idée de *définir* une fonction de l'idée de la *nommer*. Dans la notation mathématique classique du premier exemple, vous *devez* nommer la fonction lorsque vous la définissez. En notation lambda, vous n'avez pas à le nommer ; vous pouvez avoir * * des fonctions anonymes * * . L'exemple ci-dessus est une fonction anonyme. Vous pouvez nommer une fonction anonyme , en fait , mais l' idée est que définir la fonction et la nommer sont des choses distinctes : * f = λx . x^2 + 3x - 1 Ici, vous avez donné le nom « f » à la fonction anonyme à droite du signe « = ». Comment utilisez-vous les fonctions anonymes ? Eh bien, dans les notations du calcul lamba, il n'y a pas de parenthèses autour de l'argument d'une fonction ; au lieu d'écrire " f(5 ) " nous écrivons " f 5 " . Donc, pour utiliser notre fonction anonyme ci-dessus, nous écrivons ceci : * (λx . x^2 + 3x - 1) 5 Les parenthèses autour de l'expression lambda servent à préciser où se termine la définition de la fonction. C'est la notation mathématique. Dans les langages de programmation, ce qui se passe, c'est que traditionnellement la plupart des langages n'avaient que le premier style de définition de fonction, celui qui nécessite un nom. Mais au cours des 15 dernières années, de nombreux langages ont commencé à ajouter également la définition de fonction de style lambda en option. Pourquoi ? Parce que c'est utile pour utiliser des *fonctions d'ordre supérieur*—des fonctions qui prennent des fonctions comme arguments. Par exemple , de nombreux langages ont une fonction appelée ` map ` ou similaire , qui prend comme argument une fonction et une liste , et applique la fonction à tous les éléments de la liste . Si nous écrivons des listes comme ` [ 1 , 2 , 3 , 4 , 5 ] ` , alors en utilisant ` map ` vous pourriez faire quelque chose comme ceci : def plusOne(x ): return x + 1 map(plusOne , [ 1 , 2 , 3 , 4 , 5 ] ) # résultat : [ 2 , 3 , 4 , 5 , 6 ] En utilisant des expressions lambda , vous pouvez raccourcir ceci : map(lambda x : x + 1 , [ 1 , 2 , 3 , 4 , 5 ] ) Lambda vous permet de gagner du temps et d'économiser de l'espace de programme en n'ayant pas à nommer la fonction jetable ` plusOne ` - que vous ne pourrez plus jamais utiliser .