Joy (lenguaje de programación) |
El Joy es un lenguaje de
Joy es inusual, (excepto para lenguajes para
int square(int x) {
return x*x;
}
La variable x
es un parámetro formal que es sustituido por el valor real al que se le calculará el cuadrado cuando la función sea llamada. Ahora aquí está cómo la misma función sería definida en un lenguaje funcional (
(define (square x)
(* x x))
Esto es diferente en muchas formas, pero todavía utiliza el parámetro formal x
de la misma manera. Ahora, aquí está cómo la función cuadrado pudiera ser definida en Joy:
DEFINE square == dup *
Explicando el código de arriba: En Joy, todo es una función que toma una 5
no es, como puede parecer, una constante entera, sino que por el contrario es un corto programa que empuja (push) al número 5 sobre la pila.
dup
simplemente duplica el elemento superior de la pila empujando (push) una copia de este elemento.*
extrae (pop) dos números de la pila y empuja (push) su producto.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 de la pila. No hay necesidad de un parámetro formal en absoluto. Este diseño hace que el lenguaje Joy sea conciso y poderoso, según lo ilustrado por esta definición del
DEFINE qsort == [small] [] [uncons [>] split] [[swap] dip cons concat] binrec .
el binrec
es uno de muchos binrec
espera cuatro programas indicados en el tope de la pila que representan: