To install click the Add extension button. That's it.

The source code for the WIKI 2 extension is being checked by specialists of the Mozilla Foundation, Google, and Apple. You could also do it yourself at any point in time.

4,5
Kelly Slayton
Congratulations on this excellent venture… what a great idea!
Alexander Grigorievskiy
I use WIKI 2 every day and almost forgot how the original Wikipedia looks like.
Live Statistics
Spanish Articles
Improved in 24 Hours
Added in 24 Hours
Languages
Recent
Show all languages
What we do. Every page goes through several hundred of perfecting techniques; in live mode. Quite the same Wikipedia. Just better.
.
Leo
Newton
Brights
Milds

Joy (lenguaje de programación)

De Wikipedia, la enciclopedia libre

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.

YouTube Encyclopedic

  • 1/3
    Views:
    29 896
    971
    60 234
  • Programacion Juegos : Pygame 2 - Primer Ventana
  • lenguaje de bajo nivel
  • Top 5 de libros de programación

Transcription

Funcionamiento

Joy 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 x es un parámetro formal que es sustituido por el valor que se elevará al cuadrado al llamar a la función. Esta misma función definida en un lenguaje funcional (Scheme) resultaría:

 (define (square x)
   (* x x))

Esto es diferente en muchas formas, pero todavía utiliza el parámetro formal x de la misma manera. Esta misma función se definiría en Joy de la siguiente manera:

  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 5 no es, como puede parecer, una constante entera, sino un breve programa que empuja (push) al número 5 sobre la pila.

  • El operador dup simplemente duplica el elemento superior de la pila empujando (push) una copia de este elemento.
  • El operador * 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 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 .

binrec es uno de muchos combinadores recursivos de Joy. binrec espera cuatro programas indicados en el tope de la pila:

  • la condición de terminación, si una lista es "small" (pequeña) (de 1 o 0 elementos) ya está ordenada,
  • qué hacer si se cumple la condición de la terminación (en este caso nada),
  • qué hacer por defecto (divide la lista en dos mitades comparando cada elemento con el pivote),
  • y finalmente qué hacer al final (insertar el pivote entre las dos mitades clasificadas).

Pureza matemática

En 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. dup + y 2 *) pero ningún símbolo tiene más de un significado.

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én

Enlaces externos

Esta página se editó por última vez el 4 abr 2021 a las 22:00.
Basis of this page is in Wikipedia. Text is available under the CC BY-SA 3.0 Unported License. Non-text media are available under their specified licenses. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. WIKI 2 is an independent company and has no affiliation with Wikimedia Foundation.