IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[Perl6] Syntaxe docs.perl6.org


Sujet :

Langage Perl

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 138
    Points : 138
    Points
    138
    Par défaut [Perl6] Syntaxe docs.perl6.org
    Bonsoir,

    je fais mes premiers pas avec Perl6 et me demande comment interpréter la syntaxe utilisée sur docs.perl6.org, par exemple pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multi sub infix:<lcm>($a, $b --> Int:D)
    Ce que j'ai a priori interprété, lcm est un opérateur infixé, attendant deux arguments, $a et $b, et retournant un entier Int, exemple :
    Par contre, je ne sais interpréter multi et sub en début de ligne et : D après Int
    Y-a-t-il une page expliquant cette syntaxe ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    En Perl 6, un opérateur est une fonction ayant une syntaxe d'appel particulière (par exemple infixée, c'est-à-dire que l'opérateur se trouve entre ses deux opérandes, dans le cas présent). Il faut donc définir l'opérateur comme une fonction, d'où le mot-clef sub.

    Dans le cas de lcm, ça marcherait sans doute sans le mot clef multi, mais c'est plus prudent de le mettre. multi permet de spécifier plusieurs fonctions ayant le même nom mais différenciées par leur signature. On pourrait donc définir une autre fonction lcm, avec une signature différente (par exemple trois paramètres postfixés, et faisant quelque chose de (légèrement) différent. Sans le mot clef multi ça ne marcherait pas comme il faut.

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Pour compléter la réponse précédente (je n'avais pas de Rakudo installé sur ma tablette lors de ma réponse précédente rédigée dans le train), voici un exemple d'utilisation d'une seconde définition (multi) de lcm, sous le REPL Perl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    > say 16 lcm 12; # renvoie le PPCM de 16 et 12
    48
    > multi sub lcm(*@list) { # renvoie le PPCM d'une liste quelconque d'entiers
    * return [lcm] @list
    * }
    > say lcm 16, 12, 9
    144
    >
    Perl voit maintenant deux définitions de lcm, mais peut distinguer laquelle appeler (selon les paramètres passés) en fonction de la signature. Le mécanisme est assez analogue à celui de la résolution de méthodes (selon l'objet invoquant la méthode) dans la plupart des langages orientés objets ou au pattern matching de langages comme Scala ou Haskell.

    Bien sûr, dans ce cas précis, créer une fonction pour y mettre juste l'opérateur lcm avec le métaopérateur de réduction [] ne sert pas à grand chose, puisqu'il suffirait d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    say [lcm] 16, 12, 9; # -> 144
    Pour plus d'informations sur les fonction multiples, voir par exemple: http://laurent-rosenfeld.developpez....-bases/#L5-2-4 et http://laurent-rosenfeld.developpez....nnexe-02/#L3-4

Discussions similaires

  1. syntaxe jdbc mysql et doc
    Par ricault dans le forum JDBC
    Réponses: 2
    Dernier message: 28/06/2007, 11h36
  2. aide PL/SQL syntaxes [debutant] [mauvaise doc]
    Par sdeb dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/01/2004, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo