limitations
Limitations du module French / French Module Limitations
Résumé / Summary
Ce module fournit des fonctions et opérateurs en français pour Raku, mais ne peut pas modifier la syntaxe fondamentale du langage en raison des limitations actuelles de Raku (issue #2404).
This module provides French functions and operators for Raku, but cannot modify the fundamental language syntax due to current Raku limitations (issue #2404).
Ce qui fonctionne / What Works
✅ Fonctions traduites / Translated Functions
Plus de 200 fonctions traduites en français
Toutes les fonctions mathématiques, de chaînes, listes, E/S, etc.
Exemples :
dis "Bonjour !"; # say "Hello!" my $somme = somme([1,2,3,4,5]); # sum([1,2,3,4,5]) my $texte = majuscules("bonjour"); # uc("hello")
✅ Opérateurs personnalisés / Custom Operators
Opérateurs arithmétiques :
plus,moins,fois,divisé,modulo,puissanceOpérateurs de comparaison :
égal,différent,supérieur,inférieur,supérieur_égal,inférieur_égalOpérateurs logiques :
et,ou,nonOpérateurs de chaînes :
concaténer,répéter_chaîneOpérateurs de plages :
jusque,jusqu_avantOpérateurs d'affectation :
plus_égal,moins_égal,fois_égal,divisé_égal
Note importante : Les opérateurs nécessitent des parenthèses pour la précédence :
# Correct
my $résultat = (5 plus 3 fois 2); # (5+3)*2 = 16
my $résultat = (5 plus (3 fois 2)); # 5+(3*2) = 11
# Dans les conditions
if ($âge supérieur_égal 18) { ... }✅ Constantes / Constants
vrai # True
faux # False
nul # Nil
infini # Inf
π / pi # 3.14159...
e # 2.71828...Ce qui NE fonctionne PAS / What Does NOT Work
❌ Mots-clés du langage / Language Keywords
On ne peut pas traduire les structures de contrôle :
# NE fonctionne PAS :
si ($x > 5) { ... } # if
tant que ($x < 10) { ... } # while
pour @liste { ... } # for
# Doit utiliser les originaux :
if ($x > 5) { ... }
while ($x < 10) { ... }
for @liste { ... }❌ Déclaration de variables / Variable Declaration
# NE fonctionne PAS :
mon $variable = 5; # my
notre $partagé = 10; # our
# Doit utiliser :
my $variable = 5;
our $partagé = 10;❌ Syntaxe de classes et méthodes / Class and Method Syntax
# NE fonctionne PAS :
classe MaClasse { ... } # class
méthode foo() { ... } # method
# Doit utiliser :
class MaClasse { ... }
method foo() { ... }❌ Modificateurs d'instructions / Statement Modifiers
# NE fonctionne PAS :
dis "Bonjour" si $condition; # if modifier
# Doit utiliser :
dis "Bonjour" if $condition;Raison technique / Technical Reason
Rakudo (l'implémentation de Raku) a l'issue #2404 qui empêche les modules de modifier complètement la grammaire du langage. Les slangs (sous-langages) ne peuvent actuellement pas :
Changer les mots-clés réservés
Modifier la syntaxe de déclaration
Altérer les structures de contrôle de base
Cependant, ils PEUVENT :
Définir de nouvelles fonctions
Créer des opérateurs personnalisés
Exporter des symboles dans l'espace de noms
Solutions de contournement / Workarounds
Pour les structures de contrôle / For Control Structures
Utilisez les fonctions fournies avec des blocs :
# Au lieu de la syntaxe if/while
si($x > 5, { dis "Plus grand" }, { dis "Plus petit ou égal" });
tant_que({ $x < 10 }, {
dis $x;
$x++;
});
pour([1,2,3,4,5], -> $n {
dis "Nombre : $n";
});Pour une meilleure lisibilité / For Better Readability
Utilisez des commentaires en français :
# Si l'utilisateur est majeur
if ($âge supérieur_égal 18) {
dis "Peut voter";
}
# Pour chaque étudiant dans la liste
for @étudiants -> $étudiant {
dis "Traitement : $étudiant";
}Statut futur / Future Status
Quand l'issue #2404 de Rakudo sera résolue, il sera possible de :
Traduire tous les mots-clés
Créer une syntaxe entièrement en français
Modifier la grammaire du langage
Pour l'instant, ce module offre la fonctionnalité maximale possible dans les limites actuelles.
Recommandation / Recommendation
Pour des projets éducatifs ou d'apprentissage, ce module est excellent pour :
Enseigner la programmation aux francophones
Démontrer des concepts sans la barrière de la langue
Créer des exemples plus accessibles
Pour des projets de production, considérez :
Utiliser des commentaires en français avec du code en anglais
Documenter exhaustivement en français
Créer des fonctions auxiliaires avec des noms descriptifs en français