Tutorial introductorio sobre Joy, un lenguaje funcional basado en composición

Fuentes: An informal tutorial on Joy

Joy es un lenguaje de programación funcional que se distingue por basarse en la composición de funciones y no en la aplicación de funciones a argumentos. En lugar de abstracción lambda, emplea la quotation de expresiones, y un conjunto amplio de combinadores se encarga de la dequotation, con un efecto equivalente al de las funciones de orden superior. Varios de esos combinadores sirven para eliminar definiciones recursivas. Los programas en Joy son compactos y, con frecuencia, se leen como notación postfija; la ausencia de sustitución de parámetros formales por reales facilita tanto la escritura como el razonamiento sobre el código.

El artículo describe los rasgos básicos del lenguaje, comunes a todas sus implementaciones. Empieza con una nota sobre los tipos de datos elementales (enteros y, gracias a la extensión de John Cowan de 2001, números reales) y las operaciones aritméticas en notación postfija, donde los valores se apilan en una pila y los operadores consumen los elementos superiores para producir un resultado. Tras repasar las listas —que pueden mezclar tipos y anidar otras listas— el texto aborda el rasgo central de Joy: las quotations de programas y su combinación mediante combinadores como map, que aplica un programa entre corchetes a cada elemento de una lista. También se explican las definiciones sin parámetros formales, los bloques DEFINE y LIBRA, y el combinador primrec, que implementa recursión primitiva y permite calcular, por ejemplo, el factorial sin recurrir a definiciones recursivas explícitas. La notación, bautizada por Billy Tanksley como concatenativa, se emplea en calculadoras de bolsillo, en la utilidad dc de Unix, en PostScript y en Forth.