El proyecto 'Jubbly' explora una idea innovadora en diseño de lenguajes de programación, enfocada en simplificar y mejorar la forma en que se realizan las reasignaciones de valores, especialmente en estructuras de datos complejas. Tradicionalmente, en muchos lenguajes, asignar un nuevo valor a una variable implica, a menudo, expresiones complejas y potencialmente mutables (que modifican el objeto original). Por ejemplo, para modificar un elemento dentro de una lista anidada, podrías necesitar una serie de accesos y asignaciones individuales.
La idea central de 'Jubbly' es introducir una palabra clave, alt, que generaliza el comportamiento de los operadores infijos (aquellos que se sitúan entre operandos, como + en x + 1). En lugar de usar símbolos especiales como +=, alt permite expresar la misma operación de una manera más concisa y, crucialmente, con un comportamiento de reasignación que evita la mutación directa del objeto original. Esto significa que al modificar l[1][1].age.=9, no se está modificando el objeto Cat original, sino creando una copia con la nueva edad, y reemplazando la referencia dentro de la lista l con esta copia.
La sintaxis alt x + 1 es equivalente a x = x + 1, pero la clave está en cómo alt gestiona la reasignación. Esto es particularmente útil cuando se trabaja con estructuras de datos anidadas, como listas de listas o objetos que contienen otros objetos. El autor introduce también operadores personalizados como ]= (para asignación a un índice) y .= (para reemplazo de atributos), que se pueden usar de forma similar a los operadores existentes pero con el mismo comportamiento de reasignación no mutatoria.
Un aspecto interesante es la capacidad de usar operadores infijos con funciones binarias (funciones que toman dos argumentos) usando una notación con tildes (~). Por ejemplo, l~push~5 añade el valor 5 a la lista l sin modificar la lista original, sino creando una nueva.
En resumen, 'Jubbly' propone una alternativa a la mutación tradicional, promoviendo un estilo de programación más funcional y predecible, donde las reasignaciones crean nuevos objetos en lugar de modificar los existentes, facilitando el razonamiento sobre el código y evitando efectos secundarios inesperados. Aunque el lenguaje está en una fase temprana de desarrollo, la idea de la palabra clave alt y los operadores personalizados ofrecen una visión prometedora para el diseño de lenguajes de programación.
