Perl 6 : formes pour les types ; ou comment Rakudo * est bodybuildé

Par Stéphane Payrard (‎cognominal‎) de Paris.pm
Date : vendredi 11 juin 2010 14h25
Durée : 40 minutes
Cible : Intermedaire
Langue : Français
Tags : motif parcel perl6 rakudo signature switch


La notion de type est bien connue des programmeurs. mais celles de forme/motif et de reconnaissance de motif (pattern matching en anglais) le sont moins. La forme est ce qui caractérise une valeur composite en plus des types de ses composants. Certaines formes sont familières aux programmeurs Perl 5 (tableaux, hash); Une autre est nouvelle et fondamentale en Perl 6, la paire. Tout trois sont des classes.

On peut emboîter les formes atomiques les unes dans les autres, et on obtient ce que nous appelons arbre dans notre jargon. Les arbres peuvent être de forme arbitrairement complexe. Ainsi un document xml peut être vu comme un arbre dont beaucoup de nœuds sont constitués d'une valeur, d'un hash et d'un tableau.

La reconnaissance de motif permet d'associer des actions aux formes et les types qu'elles contiennent pour agir sur elles ou d'autres données associées.

La signature d'une fonction/méthode spécifie le type et la forme des arguments qu'elle accepte. Les multiméthodes et multisubs sont des méthodes ou subs de même nom mais avec des signatures différentes. la reconnaissance de motif permet l'appel de la bonne méthode/sub. De même, le switch sous EPO de Perl 6 (le given/when), utilise la reconnaissance de motif pour passer le contrôle au bon bloc.

Regex et grammaire sont similaires à la reconnaissance de formes. Mais, au lieu de reconnaître des formes explicites, elles reconnaissent des formes sous-jacentes à une chaîne de caractères. En fait, l'analyse syntaxique est souvent un préliminaire à la reconnaissance de motif.

Regex et reconnaissance de motif permettent tous deux d'éviter l'écriture explicite de structures de contrôle pour manipuler les données.

Si le temps imparti me le permet, je montrerais la similarité avec les notions correspondantes des langages Haskell et Scala.

Les notions présentées dans ce talk sont _la_ grande nouveauté de rakudo star, l'implantation de Perl 6 utilisant la machine virtuelle Parrot. On l'écrit Rakudo *, et on le prononce souvent Whatever. En effet, * est du sucre syntaxique équivalent à Whatever, la classe/valeur-singleton. Whatever est un joker dont la sémantique est totalement dépendante du contexte.

Rappelons que Rakudo n'est pas une release nouvelle d'un interpréteur existant. Contrairement aux langages concurrents,
les releases Perl ont toujours veillé à la rétrocompatibilité. Perl 6 est l'occasion de refondre le langage en exploitant une expérience accumulée pendant 20 ans par la communauté Perl, en s'inspirant d'autres langages et machines virtuelles, et cela après 10 ans de travail sur le spécification et près de 5 de retour d'expérience sur des implantation partielles.

Whatever sera l'objet d'une présentation éclair.
L'omniprésence des paires en Perl 6 est la motivation pour une autre présentation.


Présentation suivie par: Jean Forget,