Common Lisp

Common Lisp es un lenguaje de programación que pertenece a la familia de lenguajes Lisp. Se encuentra descrito en el documento estándar ANSI INCITS 226-1994 (R2004) del ANSI, (antes X3.226-1994 (R1999)).[1] Desarrollado para estandarizar las variantes divergentes del Lisp (aunque principalmente las variantes de MacLisp) que lo precedió, no es una implementación sino una especificación del lenguaje. Están disponibles varias implementaciones del estándar de Common Lisp, incluyendo la de software libre y de código abierto y productos propietarios.

Common Lisp es un lenguaje multi paradigma de propósitos generales. Soporta una combinación de paradigmas de programación como procedimental ( imperativo), funcional, y orientada al objeto. Como un lenguaje de programación dinámica, facilita el desarrollo de software de una manera evolutiva e incremental, con la compilación iterativa en programas eficientes en tiempo de ejecución.

Common Lisp incluye al CLOS, un sistema de objetos que soporta multimétodos y combinaciones de métodos. Es extensible a través de del MetaObject Protocol. Common Lisp es extensible usando las características estándar tales como macros de Lisp (rearreglo del código en tiempo de compilación logrado por el programa en sí mismo) y macros de lectura (extensión de la sintaxis para dar un significado especial a los caracteres reservados para los usuarios con este propósito).

Sintaxis

Common Lisp es un dialecto de Lisp; usa expresiones S para denotar tanto el código como la estructura de datos. Las funciones y la llamadas a macros son escritas como listas, con el nombre de la función primero, como en estos ejemplos:

 (+ 2 2)           ; suma 2 más 2, dando como resultado 4.
 (defvar *x*)      ; Se asegura de que exista una variable *x*,
                   ; sin darle un valor. El enlace (binding) se
                   ; establece en un ámbito dinámico en vez de léxico.
 (setf *x* 42.1)   ; Fija la variable *x* al valor 42,1 de coma flotante
 ;; Define la función que calcula el cuadrado de un número:
 (defun cuadrado (x) 
   (* x x))
 ;; Ejecuta la función:
 (cuadrado 3)        ; Retorna 9
 (cuadrado *x*)      ; Retorna 1772,4099
 ;; El constructor del 'let' crea un ámbito para variables locales.
 ;; Aquí la variable 'a' está enlazada (bound) a 6 y la variable 'b' está enlazada a 4.
 ;; Dentro de 'let' hay un 'cuerpo' donde el último valor computado es retornado.
 ;; Aquí, el resultado de sumar a y b es retornado desde la expresión 'let'.
 ;; Las variables a y b tienen ámbitos léxicos a menos que los símbolos hayan sido
 ;; marcados como variables especiales (por ejemplo por un DEFVAR anterior). 
 (let ((a 6)
       (b 4)) 
   (+ a b))        ; retorna 10
Other Languages
čeština: Common Lisp
Deutsch: Common Lisp
English: Common Lisp
français: Common Lisp
galego: Common Lisp
hrvatski: Common Lisp
magyar: Common Lisp
Հայերեն: Common Lisp
íslenska: Common Lisp
italiano: Common LISP
日本語: Common Lisp
한국어: 커먼 리스프
polski: Common Lisp
português: Common Lisp
română: Common Lisp
русский: Common Lisp
srpskohrvatski / српскохрватски: Common Lisp
svenska: Common Lisp
українська: Common Lisp
中文: Common Lisp