Está en la página 1de 8

SEGUNDO TUTORIAL DE LISP

Definición de funciones:

Al igual que otros lenguajes de programación, en Lisp podemos declarar funciones


para modularizar los programas y hacerlos más legibles en la medida de lo posible,
reutilizando así código escrito y separando distintas partes del problema a representar
en módulos.

Las funciones se definen de la siguiente manera:

(defun <name> <documentation-string>(<arguments>) <body>):


Ejemplo:

CONDICIONALES

Una expresión condicional en LISP es equivalente a una serie de sentencias if anidadas


en lenguajes tipo Pascal. Tiene la siguiente forma:

(if <expr> <then-expr> <else-expr>)

Ejemplo:

● En el caso de que queramos que la última alternativa en se evalúe en "todos

Los demás casos" —es decir, siempre que todos los p sean nil— entonces ponemos t
en la última expresión condicional.

(cond ((testa) (form1a) (form2a)…(formNa))

((testb) (form1b)…(formNb)) …

(t (form1k) … (formNk))
(cond ((atom p)

nil)

((listp p) (car p))

(t nil))

Funciones logicas y null:


● Devuelve t si todos los form1, form 2, .., form n son t (verdaderos) y nil en los otros
casos.

 AND
(and <form 1> <form 2> … <form n>)

 OR
(or <form1> <form2> … <formn>)

 NOT
ITERACIÓN:
(let ((<var1> <init1>) (<var2> <init2>) …) <Body> )
Esta función permite asignar variables locales antes de usarlas.

Ejemplos:

Otros Tipos De Iteraciones :


● Asigna a counter el valor limit; evalúa body y realiza iteraciones hasta que se cumpla
la condición expresada en body.

(dotimes (<counter> <limit> <result>) <body>)

Ejemplo:

● Asigna a var el primer elemento de la lista initlist; evalúa body; si inilist llega a ser
result, devuelve resultado; en otro caso, le asigna a var el siguiente elemento de initlist
e itera el proceso.

(dolist (<var> <initlist> <result) <body>)


Ejemplo :

● (do ((<var1> <init1> <increment1>)


(<var2> <init2> <increment2>) …)
(<termination-test> <result>) <body>)
Actúa de la siguiente forma:
1. Asigna a la variable var1 el valor init1,..., a la variable varN el valor initN.

2. Evalúa la condición

(a) Si la condición es verdadera, evalúa las expresiones s1,..., sM y devuelve el valor de


sM.

(b) Si la condición es falsa, evalúa las expresiones de body; asigna a la variable var-1 el
valor val inc-1,..., a la variable var-N el valor val-inc-N y vuelve a (2).

Ejemplos:
RECURSIÓN:
● En Lisp podemos aplicar la recursión de funciones mediante el comando defun.
 POTENCIA DE 3 ELEVADO A UN NUMERO N

MAPCAR
● (mapcar <function-name> <list>)

"function-name" es el nombre de alguna función y "list" es una lista de

Argumentos para los cuales y en orden debe aplicarse repetidamente la función

Especificada.

Ejemplo:

STRINGS
● Un string en Lisp es técnicamente un array de caracteres. Necesitaremos hacer uso
de operadores especiales para trabajar con strings: concatenate, subseq, search.

Ejemplos:
FORMATO DE SALIDAS
● (format t cad arg1 ... argn)

Escribe la cadena en “cad” en la pantalla y devuelve NIL. “cad” puede contener


caracteres de control. Alguno de ellos son los siguientes:

 % nueva línea

 ~D si el argumento es un número decimal.

 ~A si el argumento es un caracter ASCII.

 ~B si el argumento es un número binario.

 ~O si el argumento es un número octal.

 ~X si el argumento es un número hexadecimal.


AYUDAS (RASTREADOR)
(TRACE fn1 ... fnN)

Permite rastrear las funciones fn1,..., fnN mostrando la acción de las funciones fn1,...,
fnN cada vez que actúan.

(UNTRACE fn1 ... fnN)

Elimina el efecto de TRACE de las funciones fn1,..., fnN.

(UNTRACE)

Elimina el efecto de TRACE de toda función que lo tenga. Devuelve la lista de las
funciones con TRACE.

También podría gustarte