1 points par GN⁺ 2024-11-14 | 1 commentaires | Partager sur WhatsApp
  • Cinq fonctionnalités Raku originales

    • Raku ressemble à un laboratoire où l’on expérimente de nombreuses fonctionnalités de langage. Il propose plusieurs modèles de concurrence et diverses capacités, avec une manière unique de les faire interagir.
  • Junctions

    • Les junctions représentent un ensemble de valeurs possibles et servent à exprimer des formules logiques.
    • Elles appliquent les opérations à toutes les valeurs, puis sont utilisées après conversion en booléen.
    • Raku permet d’exprimer élégamment les quantificateurs grâce aux junctions.
  • Whatevers

    • * est le symbole « whatever » et remplit plusieurs rôles.
    • Dans une plage ou une séquence, il signifie « unbound » et se transforme en fonction anonyme.
    • Comme de nombreuses méthodes Raku sont surchargées pour accepter des fonctions, cela s’avère très utile.
  • Expressions régulières

    • Raku propose une nouvelle syntaxe, différente des expressions régulières classiques compatibles POSIX ou Perl.
    • On peut composer les expressions régulières pour les découper en parties plus simples et plus lisibles.
    • Le langage prend en charge les grammaires d’analyse comme fonctionnalité native.
  • Hyperoperators

    • l>>.method est globalement similaire à map, mais descend récursivement jusque dans les sous-listes.
    • Les hyperopérateurs binaires appliquent une opération élément par élément sur deux listes.
    • Ils sont utiles pour exécuter la même formule sur plusieurs entrées.
  • Syntaxe des paires

    • Les hashes de Raku sont composés de paires key => value, et la « syntaxe à deux-points » permet de les écrire de façon concise.
    • :key et :!key correspondent respectivement à key => True et key => False.
    • Cela permet de configurer des méthodes de manière très concise.
  • Le laboratoire de nouvelle génération : Slangs et RakuAST

    • Les slangs permettent de modifier la syntaxe de Raku, par exemple en changeant la syntaxe des boucles ou les identifiants.
    • RakuAST permet d’analyser toutes les expressions Raku en AST depuis l’intérieur même de Raku.
  • Expérience bonus

    • Raku fournit, via l’installation de « Rakudo Star », un ensemble préinstallé de modules tiers.
    • C’est un excellent compromis entre la charge de maintenance d’une grosse bibliothèque standard et l’effort demandé aux utilisateurs pour trouver les bons paquets.
  • Blogs recommandés

    • Les blogs d’Elizabeth Mattijsen et de Codesections offrent de nombreuses informations sur les internals de Raku.
    • Le Raku Advent Calendar est une excellente ressource sur les techniques Raku avancées.

1 commentaires

 
GN⁺ 2024-11-14
Discussion sur Hacker News
  • Présentation d’une fonctionnalité d’expressions régulières compositionnelles implémentée indépendamment en JavaScript, décrite comme une bibliothèque souvent utilisée dans plusieurs projets. Cela donne un peu plus l’impression d’utiliser des parseurs de première classe dans le langage. Un exemple de mise en œuvre pour l’analyse de types MIME est partagé

    • templated-regular-expression est disponible sur npm et GitHub
    • Les langages de programmation devraient avoir de vrais parseurs et ne pas utiliser les expressions régulières comme parseurs. Cependant, si l’on utilise des expressions régulières, il vaut mieux les découper en petits morceaux
  • Quelqu’un dit préférer quitter l’industrie avant d’avoir à maintenir une base de code Raku

  • Les problèmes de performance de Raku ne sont toujours pas résolus, et la version récente de Raku met encore 6,5 fois plus de temps que Python 3.13 pour analyser des fichiers journaux

  • Les principales fonctionnalités de Raku sont le CLI et les grammaires

    • Le CLI est une fonctionnalité courante, et comme il est intégré à Raku, il est agréable à utiliser
    • Il est rare que les grammaires soient traitées comme des « citoyens de première classe » dans un langage de programmation, et Raku offre la possibilité de créer des grammaires en utilisant la programmation orientée objet
  • Hyper semble être une version plus ad hoc des schémas de récursion, similaire à _ en Scala. L’auteur dit aimer Scala pour les lambdas et pense que tous les langages devraient adopter quelque chose de similaire

  • Une question est soulevée sur le fait que (2, 30, 4, 50).map(* + *) renvoie (32, 45), alors qu’on pourrait s’attendre à (32, 54). Cela pourrait être lié aux différences entre certains pays dans la manière de représenter les nombres

  • Avis selon lequel Perl sert désormais de porte d’entrée vers les langages de la famille APL

  • Surprise de voir que (2,4,8...*)[17] renvoie 262144

  • Quelqu’un dit utiliser Raku en production et le considérer comme le meilleur langage pour le traitement de texte. La construction de parseurs y est excellente, et il est surprenant que ce ne soit pas le meilleur langage pour créer des pipelines de texte pour les LLM

  • Cette personne suit le projet depuis longtemps, le trouve intéressant, mais regrette que Perl 6 ait été fortement perturbé à cause de ce projet