French - Module français pour Raku
This module provides French language support for Raku, allowing you to write Raku programs using French keywords, functions, and operators. It includes translations for over 200 built-in functions and introduces French-specific operators for a more natural programming experience in French.
Installation
zef install French
Ou depuis le répertoire source / Or from source directory:
zef install .
Utilisation de base / Basic Usage
use French;
# Afficher en français
dis "Bonjour le monde !";
# Variables et types
my $nom = demander "Comment vous appelez-vous ? ";
dis "Bonjour, $nom !";
# Nombres et mathématiques
my @nombres = 1..10;
dis "La somme est : ", somme(@nombres);
dis "La moyenne est : ", moyenne(@nombres);
# Opérateurs en français
my $résultat = 5 plus 3 fois 2;
dis "5 plus 3 fois 2 = $résultat";
Caractéristiques / Features
Entrée/Sortie de base / Basic I/O
dis
/ dire
- afficher avec nouvelle ligne (say)imprimer
- afficher sans nouvelle ligne (print)demander
- demander une entrée utilisateur (prompt)lire
- lire une ligne (get)avertir
- afficher un avertissement (warn)
Constantes / Constants
vrai
- Truefaux
- Falsenul
- Nilinfini
- Infinityπ
/ pi
- Pie
- Nombre d'Euler
Fonctions mathématiques / Math Functions
somme(@nombres)
- somme des élémentsproduit(@nombres)
- produit des élémentsmoyenne(@nombres)
- moyenneminimum(@nombres)
- valeur minimalemaximum(@nombres)
- valeur maximaleracine_carrée($n)
- racine carréepuissance($x, $y)
- x élevé à la puissance ysinus($x)
, cosinus($x)
, tangente($x)
- fonctions trigonométriquesarrondir($x)
, plafond($x)
, plancher($x)
- arrondissement
Fonctions de chaînes / String Functions
majuscules($s)
- convertir en majusculesminuscules($s)
- convertir en minusculesélaguer($s)
- supprimer les espaces blancslongueur($s)
- longueur de la chaînecontient($s, $sous)
- vérifier si contient une sous-chaîneremplacer($s, $de, $à)
- remplacer la première occurrencediviser($s, $sep)
- diviser la chaînejoindre(@parties, $sep)
- joindre les éléments
Fonctions de listes/tableaux / List/Array Functions
taille_liste(@arr)
- nombre d'élémentspremier(@arr)
- premier élémentdernier(@arr)
- dernier élémenttrier(@arr)
- trier les élémentsinverser_liste(@arr)
- inverser l'ordremapper(&fonction, @arr)
- appliquer une fonction à chaque élémentfiltrer(&condition, @arr)
- filtrer les élémentsuniques(@arr)
- éléments uniques
Opérateurs en français / French Operators
Arithmétiques / Arithmetic
plus
- addition (+)moins
- soustraction (-)fois
- multiplication (*)divisé
- division (/)modulo
- reste (%)puissance
- puissance (**)
Comparaison / Comparison
égal
- égal à (==)différent
- différent de (!=)supérieur
- supérieur à (>)inférieur
- inférieur à (<)supérieur_égal
- supérieur ou égal (>=)inférieur_égal
- inférieur ou égal (<=)
Logiques / Logical
et
- et logique (&&)ou
- ou logique (||)non
- négation (!)
Chaînes / Strings
concaténer
- concaténation (~)répéter_chaîne
- répéter une chaîne (x)
Gestion des fichiers / File Handling
# Lire un fichier
my $fichier = ouvrir("données.txt", :r);
my $contenu = lire_fichier($fichier);
fermer($fichier);
# Écrire un fichier
$fichier = ouvrir("sortie.txt", :w);
écrire_ligne($fichier, "Bonjour depuis Raku en français");
fermer($fichier);
# Vérifier l'existence
if fichier_existe("données.txt") {
dis "Le fichier existe";
}
Date et heure / Date and Time
dis "Maintenant : ", maintenant();
dis "Date : ", date();
dis "Heure : ", heure();
dormir(2); # Pause de 2 secondes
Nombres aléatoires / Random Numbers
dis "Nombre aléatoire : ", aléatoire();
dis "Entier 1-100 : ", entier_aléatoire(100) + 1;
my @options = <rouge vert bleu>;
dis "Couleur aléatoire : ", choisir_aléatoire(@options);
Programmation fonctionnelle / Functional Programming
# Composition de fonctions
my @données = 1..20;
my @résultat = @données
.&filtrer(-> $x { est_pair($x) })
.&mapper(-> $x { $x fois 2 })
.&filtrer(-> $x { $x supérieur 10 });
# Réduction
my $somme_totale = réduire(-> $a, $b { $a plus $b }, @nombres);
Gestion des erreurs / Error Handling
my $résultat = essayer {
# Code qui peut échouer
1 divisé 0
};
capturer(
{ mourir "Erreur !" },
-> $erreur { dis "Capturé : $erreur" }
);
# Exécution sûre avec valeur par défaut
my $valeur = sûrement({ 1 divisé 0 }, 42);
Fonctionnalités avancées / Advanced Features
Promesses et concurrence / Promises and Concurrency
my $promesse = promesse { dormir(2); 42 };
my $valeur = attendre($promesse);
dis "Résultat : $valeur";
Traitement parallèle / Parallel Processing
my @grandes_données = 1..1000;
my @résultats = parallèle(@grandes_données, -> $x { $x ** 2 });
Évaluation paresseuse / Lazy Evaluation
my @fibonacci = 1, 1, * plus * ... *;
dis "10 premiers Fibonacci : ", @fibonacci[^10];
Exemples complets / Complete Examples
Calculatrice simple / Simple Calculator
use French;
dis "=== Calculatrice en Français ===";
my $a = nombre(demander "Premier nombre : ");
my $opération = demander "Opération (+, -, *, /) : ";
my $b = nombre(demander "Deuxième nombre : ");
my $résultat = étant_donné $opération {
quand '+' { $a plus $b }
quand '-' { $a moins $b }
quand '*' { $a fois $b }
quand '/' { $a divisé $b }
};
dis "Résultat : $résultat";
Analyse de texte / Text Analysis
use French;
my $texte = "Ceci est un exemple de texte en français pour analyser";
my @mots_texte = mots($texte);
dis "Texte : $texte";
dis "Nombre de mots : ", compter(@mots_texte);
dis "Mots uniques : ", compter(uniques(@mots_texte));
dis "Mot le plus long : ", maximum(@mots_texte.&mapper(-> $m { longueur($m) }));
Limitations
En raison des limitations actuelles de Raku (issue #2404), ce module ne peut pas fournir :
- Structures de contrôle en tant que mots-clés (
si
, tant_que
, etc. doivent être utilisés comme fonctions) - Déclaration de variables avec des mots-clés en français
- Modification complète de la syntaxe
Cependant, toutes les fonctions et opérateurs fonctionnent correctement et permettent de programmer efficacement en français.
Contribuer / Contributing
Les contributions sont les bienvenues. Veuillez :
- Forker le dépôt
- Créer une branche pour votre fonctionnalité
- Envoyer une pull request
Licence / License
Artistic License 2.0
Auteur / Author
Danslav Slavenskoj