Hello!

Inspiré(e) de prendre part à la discussion ? Ou de poser une question ou demander de l’aide ?

Alors bienvenues dans les grands sujets des forums de La Bulle : m’inscrire.

Cette partie du forum n’est pas compatible avec les bloqueurs publicitaires

Félicitations à vous, de préférer les accès payants plutôt que la gratuité par la publicité, c’est honnorable et cohérent de votre part. Malheureusement, l’accès payant par micropaiement (qui serait d’environ 1 cent pour 20 pages consultées) n’est pour l’instant pas encore mis en place, et l’accès gratuit sans publicité, est réservé aux membres actif(ve)s du forum. En attendant, si vous souhaitez poursuivre votre visite chez nous, vous pouvez ajouter le site à votre liste blanche, ou encore mieux, désactiver le bloqueur partout. Pour ajouter le site à votre liste blanche, pour Firefox (similaire pour les autres navigateurs), rendez‑vous en bas à gauche de la fenêtre de votre navigateur, et cliquez sur le menu comme dans l’exemple de l’image ci‑dessous, puis rechargez la page, en appuyant sur F5.

Comprendre le sens des évaluations partielles
Auteur Message
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 22173
Mer 18 Juil 2012 08:17
Message Comprendre le sens des évaluations partielles
Je re‑poste ici, verbatim, un message posté sur un autre forum, tentant d’expliquer à quelqu’un ce qu’est une évaluation partielle en LISP, et comment s’en faire une idée. Les deux premières citations, sont les mots de deux membres de cet autre forum. La première est une réaction où une personne n’a pas compris de quoi il s’agit, et la seconde, un commentaire d’un autre membre qui essayait de le mettre sur la piste. Le reste est l’explication détaillée que j’ai voulu y ajouter.

Comme cette description est utile d’une manière assez générale, elle est re‑postée ici également.

-- début de citation --

maxpoulin64 a écrit : 
J'essaierais avec "Objet de première classe" ou "Objet de premier ordre".

Sinon c'est pas plus courant de dire "Classe mère/classe fille" ?

Explications pour MaxPoulin64
Castor à réaction a écrit : 
La notion de "first class citizen" renvoie au fait que l'on peut manipuler les fonctions comme n'importe quel autre objet (on peut les passer en paramètres d'autres fonctions, faire de l'application partielle

Comme dit Castor à Réaction, l’important est dans l’application partielle. Ça peut être utile d’en dire plus quand‑même, vue que tu semblait penser aux classes, et que ça n’a rien à voir avec ça Tire la langue .

Tu te demande peut‑être (je parle à MaxPoulin64) ce que ça peut signifier, parce que ça peut avoir l’air excessivement abstrait ou n’être qu’un cas particulier, mais en fait, c’est le contraire, c’est l’application partielle qui est la norme.

Il y a deux manières d’expliquer ce que c’est. La première, c’est en expliquant ce qu’est la curryfication, et la seconde, c’est en associant les fonctions et les expressions à des ensembles.

L’idée de la curryfication, c’est que n’importe quelle fonction prenant plusieurs paramètres, peut être réduite à une fonction prenant un seul paramètre, les autres étant fixés.

Prenons par exemple F (x, y) ‑> (x + y). À première vue, on a deux paramètres, mais on peut exprimer cette fonction à l’aide d’une fonction intermédiaire. Si y = 5, alors on peut poser la fonction Plus_5 (x) ‑> (x + 5), et remarque que Plus_5 (x) donnerait le même résultat que F (x, 5). Imagine maintenant que F ne renvoie plus un résultat, mais une fonction, qui serait Plus_Y. On aurait F (y) ‑> Plus_Y (x) ‑> (x + y). Le résultat de F (y) est alors une fonction, qui n’a que partiellement évalué x + y. Si y = 5, alors elle renvoie une fonction Plus_Y qui fait la même chose que la fonction Plus_5 introduite plus haut. C’est justement ça une évaluation partielle, la fonction Plus_Y, est une évaluation partielle. Pour évaluer complétement, on doit encore appeler Plus_Y (x), qui donnerait par exemple 2 + 5, soit 7, si x = 2 (quand Plus_Y est le résultat de F (5)).

Ça peut avoir l’air encore tordue comme ça, alors une autre manière de voir les choses, c’est avec les ensembles. Une évaluation partielle, c’est un ensemble, et plus on évalue, plus on réduit l’ensemble. Une évaluation complète, serait un ensemble réduit à un seul élément.

Par exemple si on pose que x et y sont des entiers >= 0, alors F (y) (x) renvoie une valeur dans l’ensemble des entiers >= 0. Mais F (5) (x), renvoie une valeur dans l’ensemble des entiers >= 5. On peut dire que F (5), même si ce n’est encore qu’une évaluation partielle de (x + y), est tout de même plus évaluée que F (y). Et F (5) (2) est totalement évaluée, parce que son domaine est un ensemble ne comprenant que le nombre entier, 7.

Quand tu pense qu’une évaluation partielle, est un ensemble que l’on a réduit, sans encore le réduire à un ensemble ne comptant qu’un seul élément, tu peux éventuellement te dire que ça n’est pas si abstrait que ça, et que ça correspond même au cas le plus général, et que l’évaluation complète est le cas limite ou final, selon les points de vues.

En fait dans le formalisme de LISP, une fonction peut être totalement évaluée, et alors elle est comme une expression dans le sens où on l’entend habituellement. De même, une expression peut être partiellement évaluée, et elle est alors une fonction dans le sens où on l’entend habituellement. Du coup, il n’y a même pas de différence entre une fonction et une expression : une fonction est une expression et une expression est une fonction. La seule différence qui existe entre ces fonction‑expression, c’est le degré d’évaluation (*). Qu’une fonction (ou une expression) renvoie une fonction ou une expression, ça ne fait pas de différence.

Cependant, en pratique, la syntaxe concrète distingue les deux quand‑même, par commodité, parce que les humains qui écrivent en LISP, ne sont pas (ou pas tous Grand sourire) des robots. De la même manière, il existe des raccourcie pour définir les fonctions, qui autrement devraient toujours s’écrire sous la forme qui ne les distingue pas, qui est plus pure, mais plus laborieuse à lire (et à écrire, mais la facilité de lecture est plus importante que la facilité d’écriture).


(*) Plus encore, si le résultat qui nous intéresse est un ensemble, alors une évaluation partielle, peut même être interprétée comme un résultat final Clin d’œil , décrit en intention. Mais oublie cette remarque si elle te fait t’emmêler les pinceaux.

-- fin de citation --

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet