¿Qué es LISP? ¿Qué idioma es?
LISP (nombre completo LISt Processor, Linked List Processing Language) es un lenguaje de programación funcional basado en cálculo lambda creado por John McCarthy alrededor de 1960. Hay muchos dialectos de LISP y los idiomas en cada implementación no son exactamente iguales. En la década de 1980, Guy L. Steele escribió Common Lisp en un intento de estandarizarlo, y este estándar fue aceptado por la mayoría de los intérpretes y compiladores. En los sistemas Unix/Linux, también existe Emacs Lisp junto con Emacs (y Emacs está escrito en Lisp), que es muy popular y ha establecido su propio estándar. El antepasado de LISP es el lenguaje IPL desarrollado por Newell, Shaw y Simon de la Universidad Carnegie-Mellon en la década de 1950. Las principales versiones modernas del lenguaje LISP incluyen Common Lisp y Scheme. 1 Introducción básica La expresión Lisp es un átomo o una lista. Un átomo es una secuencia de letras, como abc, una lista es una secuencia compuesta de cero o más expresiones, y las expresiones están separadas por espacios y colocadas en un par de. corchetes, como por ejemplo: abc () (abc xyz) (a b (c) d) La última tabla se compone de cuatro elementos, de los cuales el tercer elemento es en sí mismo una tabla. Así como la expresión aritmética 1+1 tiene el valor 2, las expresiones en Lisp también tienen un valor. Si la expresión e da como resultado el valor v, decimos que e devuelve v. Si una expresión es una lista, entonces llamamos operador al primer elemento de la lista y a los elementos restantes se les llama argumentos. Los 7 axiomas de Lisp (operadores básicos): (comilla x) devuelve x, que abreviamos como 'x (átomo x) devuelve el átomo t cuando x es un átomo o una lista vacía; de lo contrario, devuelve una lista vacía (). En Lisp, estamos acostumbrados a usar el átomo t para representar verdadero y la lista vacía () para representar falso. > (atom 'a) t > (atom '(a b c)) () > (atom '()) t Ahora que tenemos nuestro primer operador que requiere el valor de un argumento, veamos el operador de comillas ¿Qué hace - por citando una tabla impedimos que sea evaluada. Una expresión sin comillas sirve como argumento y atom la trata como código, por ejemplo: > (atom (atom 'a)) t Por otro lado, una tabla referenciada se trata simplemente como una tabla > (atom '(atom 'a ) ) () La referencia parece un poco extraña, porque difícilmente se pueden encontrar conceptos similares en otros lenguajes, pero es esta característica la que constituye la característica más distintiva de Lisp: el código y los datos se representan usando la misma estructura, y usamos comillas para distinguirlos.
(eq x y) Cuando los valores de x e y son iguales o ambos son listas vacías, devuelve t, de lo contrario devuelve una lista vacía () > (eq 'a 'a) t > (eq 'a 'b ) () > (eq '( ) '()) t (car x) requiere que x sea una tabla, devuelve el primer elemento en x, por ejemplo: > (car '(a b)) a (cdr x) también requiere que x sea una tabla, devuelve Una lista que consta de todos los elementos en x excepto el primer elemento, por ejemplo: > (cdr '(a b c)) (b c) (cons x y) requiere que y sea una lista y devuelve una lista con el primer elemento es x, seguido de todos los elementos en y, por ejemplo: > (cons 'a '(b c)) (a b c) > (cons 'a (cons 'b (cons 'c ())) ) (a b c) 2 Programa Hello World de LISP común El siguiente es un programa simple que genera Hello World en el dispositivo de salida estándar. Este programa generalmente se usa como el primer programa cuando se comienza a aprender un lenguaje de programación: (formato t "Hola mundo. !~%") Si cree que esta entrada necesita mejorarse y necesita agregar contenido nuevo o corregir contenido incorrecto, edite la entrada
Referencias: 1. /gnu/docs/elisp-manual -21/elisp_toc.html 3. http://www-formal.stanford.edu/jmc/frames.html Colaboradores (***2): vanton, Bomi Esta entrada se menciona en las siguientes entradas: lenguaje de programación, IA, McCarthy, pérdida de memoria, lenguaje de alto nivel, Esquema La explicación de "LISP" en el diccionario inglés-chino (fuente: Diccionario Baidu): ceceo KK: [] DJ: [] vi 1. morderse la lengua 2. hablar inarticulado. vt. 1. morder la lengua hablando 2. Hablar inarticuladamente n.[S] 1. Morderse la lengua; hablar inarticuladamente 2. Pronunciar palabras producidas al morderse la lengua;