Está en la página 1de 14

Listas

Listas
Las

listas permiten representar una gran cantidad de cosas. Inclusive los programas en Lisp se expresan como listas! Las listas tienen una representacin escrita e interna. La representacin interna son cadenas de celdas cons. (a b c) (uno) (esto es 1 lista) Corresponden a una coleccin de expresiones-s encerradas entre parntesis y separadas por uno o ms espacios. Formalmente, una lista es una expresin tal que: Un tomo, nill o () es una lista. Una lista (S1 .S2) , donde S2 es una lista. (1 .(2 .(3 ))) (1 2 3)

La estructura de datos fundamental en Haskell son Podemos definirlas enumerando sus elementos o

las listas. utilizando el smbolo especial ..

Ejemplo:
Las definiciones [1,2,3,4,5] y [1.. 5] son equivalentes

<- representa al smbolo matemtico , que

indica pertenencia a un conjunto

Tabla de operadores de listas

Ejemplo de operadores
8:[] 6:8:[] 4:[6,8] head [1,2,3,4] tail [1,2,3,4] head [[1],2,3,4] -- resultado [8] -- resultado [6,8] -- resultado [4,6,8] -- resultado 1 -- resultado [2,3,4] -- ERROR - Cannot infer instance

[1,2] ++ [3,4]
[1,2] ++ 3:[4] null [] [1,2] == [1,2] [1,2] == 1:[2]

-- resultado [1,2,3,4]
-- resultado [1,2,3,4] -- resultado True

-- resultado True

Listas
> (Dos .(hombres .(y .(un .(destino . nill))))) (Dos hombre y un destino) > (300000 .((masa . nill) .(velocidad . nill) .(luz . nill))) (300000 ((masa) velocidad) luz)

Listas anidadas: ((1 uno) (2 dos) (3 tres)) Longitud de listas: (1 2 3) ((a b) (c d) (e f)) (a (1 2 3) d)

Representacin de Listas
(setf lista-ejemplo 666) (setf lista-ejemplo .(666))

NIL

Lista vaca o nula


Las

listas pueden ser Vacas o No vacas

Listas vacas: S-expresin especial que es a la vez un tomo y una lista Se representa por NIL o ( ) Representacin tradicional:

Para

diferenciar las listas de las funciones, se empieza la lista con el signo del apstrofe

Listas no vacas

La ms sencilla es la que tiene un nico elemento. Cualquier lista no vaca de n elementos se puede ver como una estructura en la que se repite n veces la estructura de la lista con un nico elemento. La lista elemental de un solo elemento, tiene dos tipos de informacin:

El dato correspondiente a esa posicin de la lista. El dato correspondiente al siguiente elemento de la lista.

Variable lista-ejemplo que tiene un nico elemento 666:

Listas infinitas
Podemos

definir una lista infinita de la siguiente forma

[1..]

Esta es una gran diferencia entre Haskell y otros lenguajes funcionales. Las listas infinitas y las funciones que calculan valores a partir de ellas son comunes en Haskell. Esto es posible gracias a la evaluacin lenta o perezosa (lazy) de Haskell. No se evala ningn elemento en ninguna funcin hasta que no sea necesario Las listas se almacenan internamente en un formato no evaluado

Listas
Ejemplo

de la variable vocales que tiene como valor la lista LISP (a e i o u):

> (setf lista '(a e i o u)) (A E I O U)

listp, null, endp


Identificacin

de listas: listp

Identifica listas Sirve para distinguir lo que es nil o una lista no vaca de cualquier otra cosa. (listp <objeto>)

Identificacin

de listas vacas (null <objeto>) (endp <lista>)

Procesamiento Bsico de Listas


FIRST (CAR).- toma una lista como argumento y regresa el primer elemento

REST (CDR).- toma una lista como argumento y regresa una lista sin el primer elemento

CONS.- toma dos argumentos (normalmente el segundo es una lista) y regresa una lista con el primer argumento como primer elemento de la lista. NULL.- checa si una lista est vaca

LISTP.- checa si el argumento es una lista o no.

Listado de funciones
Asignacin de valores
(setf x 2) (setq x 4)

Construccin de Listas
(cons a L) (cons 'h '(o l a)) (append L L) (append '(e s t a m o s) '(f e l i c e s)) (list a a) (list 'd 'e 'c 'o 'n 'o 'c 'e 'r 'e 'l 'l 'i 's 'p)

También podría gustarte