This module provides Spanish language support for Raku, allowing you to write Raku programs using Spanish keywords, functions, and operators. It includes translations for over 200 built-in functions and introduces Spanish-specific operators for a more natural programming experience in Spanish.
zef install SpanishO desde el directorio fuente / Or from source directory:
zef install .use Spanish;
# Imprimir en español
dí "¡Hola, mundo!";
# Variables y tipos
my $nombre = pedir "¿Cómo te llamas? ";
dí "¡Hola, $nombre!";
# Números y matemáticas
my @números = 1..10;
dí "La suma es: ", suma(@números);
dí "El promedio es: ", promedio(@números);
# Operadores en español
my $resultado = 5 más 3 por 2;
dí "5 más 3 por 2 = $resultado";dí- imprimir con nueva línea (say)imprimir- imprimir sin nueva línea (print)pedir- solicitar entrada del usuario (prompt)leer- leer una línea (get)advertir- mostrar advertencia (warn)
verdadero- Truefalso- Falsenulo- Nilinfinito- Infinityπ/pi- Pie- Número de Euler
suma(@números)- suma de elementosproducto(@números)- producto de elementospromedio(@números)- promedio/mediamínimo(@números)- valor mínimomáximo(@números)- valor máximoraíz_cuadrada($n)- raíz cuadradapotencia($x, $y)- x elevado a yseno($x),coseno($x),tangente($x)- funciones trigonométricasredondear($x),techo($x),piso($x)- redondeo
mayúsculas($s)- convertir a mayúsculasminúsculas($s)- convertir a minúsculasrecortar($s)- eliminar espacios en blancolongitud($s)- longitud de la cadenacontiene($s, $sub)- verificar si contiene subcadenareemplazar($s, $de, $a)- reemplazar primera ocurrenciadividir($s, $sep)- dividir cadenaunir(@partes, $sep)- unir elementos
tamaño_lista(@arr)- número de elementosprimero(@arr)- primer elementoúltimo(@arr)- último elementoordenar(@arr)- ordenar elementosinvertir_lista(@arr)- invertir ordenmapear(&función, @arr)- aplicar función a cada elementofiltrar(&condición, @arr)- filtrar elementosúnicos(@arr)- elementos únicos
más- suma (+)menos- resta (-)por- multiplicación (*)entre- división (/)módulo- resto (%)elevado- potencia (**)
igual- igual a (==)diferente- diferente de (!=)mayor- mayor que (>)menor- menor que (<)mayor_igual- mayor o igual (>=)menor_igual- menor o igual (<=)
y- and (&&)o- or (||)no- not (!)
concatenar- concatenación (~)repetir_cadena- repetir cadena (x)
# Leer archivo
my $archivo = abrir("datos.txt", :r);
my $contenido = leer_archivo($archivo);
cerrar($archivo);
# Escribir archivo
$archivo = abrir("salida.txt", :w);
escribir_línea($archivo, "Hola desde Raku en español");
cerrar($archivo);
# Verificar si existe
if archivo_existe("datos.txt") {
dí "El archivo existe";
}dí "Ahora: ", ahora();
dí "Fecha: ", fecha();
dí "Hora: ", hora();
dormir(2); # Pausar 2 segundosdí "Número aleatorio: ", aleatorio();
dí "Entero 1-100: ", entero_aleatorio(100) + 1;
my @opciones = <rojo verde azul>;
dí "Color aleatorio: ", elegir_aleatorio(@opciones);# Composición de funciones
my @datos = 1..20;
my @resultado = @datos
.&filtrar(-> $x { es_par($x) })
.&mapear(-> $x { $x por 2 })
.&filtrar(-> $x { $x mayor 10 });
# Reducir
my $suma_total = reducir(-> $a, $b { $a más $b }, @números);my $resultado = intentar {
# Código que puede fallar
1 entre 0
};
capturar(
{ morir "¡Error!" },
-> $error { dí "Capturado: $error" }
);my $promesa = promesa { dormir(2); 42 };
my $valor = esperar($promesa);
dí "Resultado: $valor";my @grandes_datos = 1..1000;
my @resultados = paralelo(@grandes_datos, -> $x { $x ** 2 });my @fibonacci = 1, 1, * más * ... *;
dí "Primeros 10 Fibonacci: ", @fibonacci[^10];use Spanish;
dí "=== Calculadora en Español ===";
my $a = número(pedir "Primer número: ");
my $operación = pedir "Operación (+, -, *, /): ";
my $b = número(pedir "Segundo número: ");
my $resultado = dado $operación {
cuando '+' { $a más $b }
cuando '-' { $a menos $b }
cuando '*' { $a por $b }
cuando '/' { $a entre $b }
};
dí "Resultado: $resultado";use Spanish;
my $texto = "Este es un ejemplo de texto en español para analizar";
my @palabras = palabras($texto);
dí "Texto: $texto";
dí "Número de palabras: ", contar(@palabras);
dí "Palabras únicas: ", contar(únicos(@palabras));
dí "Palabra más larga: ", máximo(@palabras.&mapear(-> $p { longitud($p) }));Debido a las limitaciones actuales de Raku (issue #2404), este módulo no puede proporcionar:
- Estructuras de control como palabras clave (
si,mientras, etc. deben usarse como funciones) - Declaración de variables con palabras clave en español
- Modificación completa de la sintaxis
Sin embargo, todas las funciones y operadores funcionan correctamente y permiten programar efectivamente en español.
Las contribuciones son bienvenidas. Por favor:
- Fork el repositorio
- Crea una rama para tu característica
- Envía un pull request
Artistic License 2.0
Danslav Slavenskoj