lunes, 9 de noviembre de 2015

LISP (LISt Processing)

En el post anterior vimos programación funcional, ahora vamos a hacer un repaso de lisp, el lenguaje funcional más famoso.

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: