Skip to content

raku-multilingual/raku-spanish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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"¡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;
"5 más 3 por 2 = $resultado";

Características / Features

Entrada/Salida básica / Basic I/O

  • - 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 - True
  • falso - False
  • nulo - Nil
  • infinito - Infinity
  • π / pi - Pi
  • e - Número de Euler

Funciones matemáticas / Math Functions

  • suma(@números) - suma de elementos
  • producto(@números) - producto de elementos
  • promedio(@números) - promedio/media
  • mínimo(@números) - valor mínimo
  • máximo(@números) - valor máximo
  • raíz_cuadrada($n) - raíz cuadrada
  • potencia($x, $y) - x elevado a y
  • seno($x), coseno($x), tangente($x) - funciones trigonométricas
  • redondear($x), techo($x), piso($x) - redondeo

Funciones de cadenas / String Functions

  • mayúsculas($s) - convertir a mayúsculas
  • minúsculas($s) - convertir a minúsculas
  • recortar($s) - eliminar espacios en blanco
  • longitud($s) - longitud de la cadena
  • contiene($s, $sub) - verificar si contiene subcadena
  • reemplazar($s, $de, $a) - reemplazar primera ocurrencia
  • dividir($s, $sep) - dividir cadena
  • unir(@partes, $sep) - unir elementos

Funciones de listas/arreglos / List/Array Functions

  • tamaño_lista(@arr) - número de elementos
  • primero(@arr) - primer elemento
  • último(@arr) - último elemento
  • ordenar(@arr) - ordenar elementos
  • invertir_lista(@arr) - invertir orden
  • mapear(&función, @arr) - aplicar función a cada elemento
  • filtrar(&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

"Ahora: ", ahora();
dí "Fecha: ", fecha();
dí "Hora: ", hora();
dormir(2);  # Pausar 2 segundos

Números aleatorios / Random Numbers

"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 * ... *;
"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 }
};

"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:

  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

https://github.com/raku-multilingual/raku-spanish

About

Programming in Raku in Spanish. / Módulo de español para Raku.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages