Spanish - Módulo de español para Raku
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.
Instalación / Installation
zef install Spanish
O desde el directorio fuente / Or from source directory:
zef install .
Uso básico / Basic Usage
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";
Características / Features
Entrada/Salida básica / Basic I/O
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)
Constantes / Constants
verdadero
- Truefalso
- Falsenulo
- Nilinfinito
- Infinityπ
/ pi
- Pie
- Número de Euler
Funciones matemáticas / Math Functions
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
Funciones de cadenas / String Functions
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
Funciones de listas/arreglos / List/Array Functions
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
Operadores en español / Spanish Operators
Aritméticos / Arithmetic
más
- suma (+)menos
- resta (-)por
- multiplicación (*)entre
- división (/)módulo
- resto (%)elevado
- potencia (**)
Comparación / Comparison
igual
- igual a (==)diferente
- diferente de (!=)mayor
- mayor que (>)menor
- menor que (<)mayor_igual
- mayor o igual (>=)menor_igual
- menor o igual (<=)
Lógicos / Logical
y
- and (&&)o
- or (||)no
- not (!)
Cadenas / Strings
concatenar
- concatenación (~)repetir_cadena
- repetir cadena (x)
Manejo de archivos / File Handling
# 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";
}
Fecha y hora / Date and Time
dí "Ahora: ", ahora();
dí "Fecha: ", fecha();
dí "Hora: ", hora();
dormir(2); # Pausar 2 segundos
Números aleatorios / Random Numbers
dí "Número aleatorio: ", aleatorio();
dí "Entero 1-100: ", entero_aleatorio(100) + 1;
my @opciones = <rojo verde azul>;
dí "Color aleatorio: ", elegir_aleatorio(@opciones);
Programación funcional / Functional Programming
# 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);
Manejo de errores / Error Handling
my $resultado = intentar {
# Código que puede fallar
1 entre 0
};
capturar(
{ morir "¡Error!" },
-> $error { dí "Capturado: $error" }
);
Características avanzadas / Advanced Features
Promesas y concurrencia / Promises and Concurrency
my $promesa = promesa { dormir(2); 42 };
my $valor = esperar($promesa);
dí "Resultado: $valor";
Procesamiento paralelo / Parallel Processing
my @grandes_datos = 1..1000;
my @resultados = paralelo(@grandes_datos, -> $x { $x ** 2 });
Evaluación perezosa / Lazy Evaluation
my @fibonacci = 1, 1, * más * ... *;
dí "Primeros 10 Fibonacci: ", @fibonacci[^10];
Ejemplos completos / Complete Examples
Calculadora simple / Simple Calculator
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";
Análisis de texto / Text Analysis
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) }));
Limitaciones / Limitations
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.
Contribuir / Contributing
Las contribuciones son bienvenidas. Por favor:
- Fork el repositorio
- Crea una rama para tu característica
- Envía un pull request
Licencia / License
Artistic License 2.0
Autor / Author
Danslav Slavenskoj