Joy (lenguaje de programación)El Joy es un lenguaje de programación funcional que fue producido por Manfred von Thun de la Universidad de La Trobe en Melbourne, Australia. Joy está basado en la composición de funciones en vez del cálculo lambda. Ha resultado tener muchas semejanzas con el lenguaje Forth, debido menos al diseño que a una suerte de evolución paralela y convergente. FuncionamientoJoy es inusual (excepto para lenguajes funcionales y algunos esotéricos) por su carencia de un operador lambda y, por lo tanto, de parámetros formales. Para ilustrar esto con un ejemplo común, se muestra cómo la función square (elevar al cuadrado) puede ser definida en un lenguaje imperativo (C): int square(int x) {
return x*x;
}
La variable (define (square x)
(* x x))
Esto es diferente en muchas formas, pero todavía utiliza el parámetro formal DEFINE square == dup *
En Joy, todo es una función que toma una pila como argumento y retorna una pila como resultado. Por ejemplo, el símbolo
Así que esta definición de la función cuadrado hace una copia del elemento superior y después multiplica los dos elementos superiores, dejando el cuadrado en el elemento superior original sobre la pila. No hay necesidad de un parámetro formal en absoluto. Este diseño hace que el lenguaje Joy sea conciso y poderoso, como muestra esta definición del quicksort: DEFINE qsort == [small] [] [uncons [>] split] [[swap] dip cons concat] binrec .
Pureza matemáticaEn Joy, el significado de una función es un homomorfismo desde el monoide sintáctico sobre el monoide semántico. Es decir, la relación sintáctica de la concatenación de símbolos mapea directamente sobre la relación semántica de la composición de funciones. Es un homomorfismo en vez de un isomorfismo porque está sobre pero uno a uno, es decir, algunas secuencias de símbolos tienen el mismo significado (ej. Joy maneja ser práctico y potencialmente útil, a diferencia del, de otra manera similar, Unlambda. Sus biblioteca de rutinas reflejan las del ISO C, aunque la implementación actual no es fácilmente extensible con las funciones escritas en C. Véase tambiénEnlaces externos
|
Portal di Ensiklopedia Dunia