limitations
Limitaciones del módulo Spanish / Spanish Module Limitations
Resumen / Summary
Este módulo proporciona funciones y operadores en español para Raku, pero no puede modificar la sintaxis fundamental del lenguaje debido a las limitaciones actuales de Raku (issue #2404).
This module provides Spanish functions and operators for Raku, but cannot modify the fundamental language syntax due to current Raku limitations (issue #2404).
Qué funciona / What Works
✅ Funciones traducidas / Translated Functions
Más de 200 funciones traducidas al español
Todas las funciones matemáticas, de cadenas, listas, E/S, etc.
Ejemplos:
dí "¡Hola!"; # say "Hello!" my $suma = suma([1,2,3,4,5]); # sum([1,2,3,4,5]) my $texto = mayúsculas("hola"); # uc("hello")
✅ Operadores personalizados / Custom Operators
Operadores aritméticos:
más,menos,por,entre,módulo,elevadoOperadores de comparación:
igual,diferente,mayor,menor,mayor_igual,menor_igualOperadores lógicos:
y,o,noOperadores de cadenas:
concatenar,repetir_cadenaOperadores de rangos:
hasta,hasta_antesOperadores de asignación:
más_igual,menos_igual,por_igual,entre_igual
Nota importante: Los operadores requieren paréntesis para precedencia:
# Correcto
my $resultado = (5 más 3 por 2); # (5+3)*2 = 16
my $resultado = (5 más (3 por 2)); # 5+(3*2) = 11
# En condiciones
if ($edad mayor_igual 18) { ... }✅ Constantes / Constants
verdadero # True
falso # False
nulo # Nil
infinito # Inf
π / pi # 3.14159...
e # 2.71828...Qué NO funciona / What Does NOT Work
❌ Palabras clave del lenguaje / Language Keywords
No se pueden traducir las estructuras de control:
# NO funciona:
si ($x > 5) { ... } # if
mientras ($x < 10) { ... } # while
para @lista { ... } # for
# Debe usar las originales:
if ($x > 5) { ... }
while ($x < 10) { ... }
for @lista { ... }❌ Declaración de variables / Variable Declaration
# NO funciona:
mi $variable = 5; # my
nuestro $compartido = 10; # our
# Debe usar:
my $variable = 5;
our $compartido = 10;❌ Sintaxis de clases y métodos / Class and Method Syntax
# NO funciona:
clase MiClase { ... } # class
método foo() { ... } # method
# Debe usar:
class MiClase { ... }
method foo() { ... }❌ Modificadores de sentencias / Statement Modifiers
# NO funciona:
dí "Hola" si $condición; # if modifier
# Debe usar:
dí "Hola" if $condición;Razón técnica / Technical Reason
Rakudo (la implementación de Raku) tiene el issue #2404 que impide que los módulos modifiquen completamente la gramática del lenguaje. Los slangs (sub-lenguajes) actualmente no pueden:
Cambiar palabras clave reservadas
Modificar la sintaxis de declaración
Alterar las estructuras de control básicas
Sin embargo, SÍ pueden:
Definir nuevas funciones
Crear operadores personalizados
Exportar símbolos al espacio de nombres
Soluciones alternativas / Workarounds
Para estructuras de control / For Control Structures
Use las funciones proporcionadas con bloques:
# En lugar de sintaxis if/while
si($x > 5, { dí "Mayor" }, { dí "Menor o igual" });
mientras({ $x < 10 }, {
dí $x;
$x++;
});
para([1,2,3,4,5], -> $n {
dí "Número: $n";
});Para mejor legibilidad / For Better Readability
Use comentarios en español:
# Si el usuario es mayor de edad
if ($edad mayor_igual 18) {
dí "Puede votar";
}
# Para cada estudiante en la lista
for @estudiantes -> $estudiante {
dí "Procesando: $estudiante";
}Estado futuro / Future Status
Cuando se resuelva el issue #2404 de Rakudo, será posible:
Traducir todas las palabras clave
Crear una sintaxis completamente en español
Modificar la gramática del lenguaje
Por ahora, este módulo ofrece la máxima funcionalidad posible dentro de las limitaciones actuales.
Recomendación / Recommendation
Para proyectos educativos o de aprendizaje, este módulo es excelente para:
Enseñar programación a hispanohablantes
Demostrar conceptos sin la barrera del idioma
Crear ejemplos más accesibles
Para proyectos de producción, considere:
Usar comentarios en español con código en inglés
Documentar exhaustivamente en español
Crear funciones auxiliares con nombres descriptivos en español