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, elevado

  • Operadores de comparación: igual, diferente, mayor, menor, mayor_igual, menor_igual

  • Operadores lógicos: y, o, no

  • Operadores de cadenas: concatenar, repetir_cadena

  • Operadores de rangos: hasta, hasta_antes

  • Operadores 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:

  1. Cambiar palabras clave reservadas

  2. Modificar la sintaxis de declaración

  3. 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

Spanish v0.0.2

Spanish language support for Raku - Soporte del idioma español para Raku

Authors

  • Danslav Slavenskoj

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Español
  • Spanish

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.