Es el lenguaje más conocido de Programación Funcional. Aún así, no es un lenguaje funcional puro ya que posee asignación (SETF) e iteración (DO).
Se utiliza la notación prefijo para cualquier función, inclusive para las expresiones aritméticas
Funciones y constantes más importantes:
- (FIRST lista) o (CAR lista) //devuelve el primer elemento de lista
- (REST lista) o (CDR lista) //devuelve la lista resultante de quitar el primer elemento a lista
- (NULL lista) //determina si una lista está vacía
- (CONS elemento lista) //construye una nueva lista con elemento como primero y lista como resto
- (DEFUN nombreFuncion (parámetros) resultado) //define una función
- (COND (condición1 resultado1) (condición2 resultado2) ... )
- //devuelve el i-ésimo resultado si la i-ésima condición es verdadera, partiendo por i=1
- NIL // constante Lista Vacía y constante False
- T // constante True
- ’() // constante Lista Vacía
- (FUNCALL variableFuncion Parámetro1 Parámetro2 ... ParámetroN) //ejecuta la función asociada a la variableFuncion, normalmente pasada como parámetro, con los parámetros indicados
- (LISTP objeto) //verdadero si objeto es una lista
- (NUMBERP objeto) //verdadero si objeto es un número
- (AND condicion1 condicion2 ...) //verdadero si todas las condiciones son verdaderas
- (OR condicion1 condicion2 ...) //verdadero si al menos una condición es verdadera
- (+ num1 num2 … numN) // suma
- (- num1 num2) // resta
- (< expr1 expr2) // verdadero si expr1 es menor que expr2
- (= expr1 expr2) // verdadero si expr1 es igual a expr2
Veamos una función en Lisp:
(defun cuadrado(n) (
(* n n)
)
Dejo link: