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, puissance

  • Opérateurs de comparaison : égal, différent, supérieur, inférieur, supérieur_égal, inférieur_égal

  • Opérateurs logiques : et, ou, non

  • Opérateurs de chaînes : concaténer, répéter_chaîne

  • Opérateurs de plages : jusque, jusqu_avant

  • Opé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 :

  1. Changer les mots-clés réservés

  2. Modifier la syntaxe de déclaration

  3. 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

French v0.0.2

French language programming for Raku - Support de la langue française pour Raku

Authors

  • Danslav Slavenskoj

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Français
  • French

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.