Rand Stats

Spanish

zef:slavenskoj

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

Constantes / Constants

Funciones matemáticas / Math Functions

Funciones de cadenas / String Functions

Funciones de listas/arreglos / List/Array Functions

Operadores en español / Spanish Operators

Aritméticos / Arithmetic

Comparación / Comparison

Lógicos / Logical

Cadenas / Strings

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:

Sin embargo, todas las funciones y operadores funcionan correctamente y permiten programar efectivamente en español.

Contribuir / Contributing

Las contribuciones son bienvenidas. Por favor:

  1. Fork el repositorio
  2. Crea una rama para tu característica
  3. Envía un pull request

Licencia / License

Artistic License 2.0

Autor / Author

Danslav Slavenskoj