Ruby más simple: experimento con sintaxis Lisp

Fuentes: rubysyn/README.md at master · squadette/rubysyn

Este proyecto, llamado 'rubysyn', es un experimento para simplificar y clarificar la sintaxis de Ruby, utilizando una alternativa basada en Lisp. El objetivo no es cambiar la semántica de Ruby, sino ofrecer una sintaxis más fácil de analizar y más 'limpia', eliminando 'azúcar sintáctico' innecesario. La motivación surgió de la necesidad de una explicación más clara de ciertos aspectos de la sintaxis de Ruby, que la documentación estándar a veces no aborda completamente. Esto incluye detalles sobre literales de arrays, asignación de variables, operadores lógicos y otros elementos fundamentales del lenguaje.

Un punto clave es la explicación detallada de la sintaxis de 'array splat' (construcción de arrays con 'splat'), que permite insertar los elementos de un array o el resultado de un método (que devuelve un array) dentro de otro array. Por ejemplo, [1, 2, *foo, 3] donde foo es un array, se expande a [1, 2, foo[0], foo[1], 3]. Si foo es nil, se expande a [1, 2, 3]. Si foo responde al método to_a, se usa el resultado de ese método. Esta sintaxis, aunque común, no está explicada de forma exhaustiva en la documentación oficial de Ruby.

Rubysyn propone una sintaxis alternativa para expresar estas construcciones, buscando una representación más directa y comprensible. Por ejemplo, [1, 2, 3] se representaría como (array 1 2 3). La asignación de variables también se redefine, separando la declaración de la asignación y proporcionando una sintaxis más explícita para la asignación múltiple. Se introduce una notación especial (*) para capturar los valores restantes en una asignación múltiple, lo que permite una distribución flexible de los elementos de un array en múltiples variables.

En resumen, rubysyn es un proyecto ambicioso que busca mejorar la comprensión de la sintaxis de Ruby a través de una representación alternativa, más transparente y fácil de analizar, sin alterar su comportamiento fundamental. Aunque es un experimento, su análisis de la sintaxis existente y sus propuestas de simplificación pueden ser valiosas para cualquier desarrollador de Ruby.