Primero 2 funciones que pueden venir bien en cualquier situación:
LENGTH
(length lista)
Devuelve el número de elementos de la lista.
(length ‘(a b c))
> 3
REVERSE
(reverse lista)
Devuelve la misma lista pero invierte el orden.
(reverse ‘(a b c))
> (c b a)
Y dos funciones muy importantes en lisp:
LET
Esta función permite hacer asignación de variables de forma local.
Se ve claro en el siguiente ejemplo.
(setf a ‘HOLA)
(setf b ‘ADIOS)
(let ( (a 6)
(b 9)
)
(+ a b)
)
> 15
a
> HOLA
b
> ADIOS
Esto es, dentro del cuerpo del LET las variables tienen el valor que se ha preasignado, y no tiene que ver con el valor que tenían fuera de ese ámbito.
LET*
Es muy similar a LET, pero con el asterisco la asignación es dinámica. ¿Que significa esto? Veámoslo con otro ejemplo:
(let (
(x 100)
(y (+ x 200))
)
)
Esto devuelve un error si se hace con la función LET. Es porque cuando intenta asignar un valor a “y”, “x” todavía no tiene un valor válido.
En cambio si utilizamos LET*, primero asigna el valor a “x” y luego a “y”, de forma que no se produce un error.
No hay comentarios:
Publicar un comentario