2. Listas y Excepciones
Cabeza de la lista (hd
)
Devuelve el primer elemento de la lista de ser una lista vacía falla con “empty list”.
Cola de la lista (tl
)
Devuelve la lista sin el primer elemento, de ser una lista vacía falla con “empty list”.
Último elemento (last
)
Longitud (length
)
Devuelve el número de elementos que componen la lista, siendo 0 la lista vacía.
-
Variante NO terminal
-
Variante terminal
Comparar longitudes (compare_lengths
)
Compara las longitudes de dos listas (sin usar length
). De ser iguales se devuelve 0, de ser la primera más larga que la segunda se devuelve 1, en caso contrario -1.
Anexar dos listas (append
)
Devuelve una lista compuesta de la primera continuada por la segunda. (Sin utilizar @
)
Del revés (rev
)
Darle la vuelta a una lista. Ej:
Anexar del revés (rev_append
)
Invierte la lista l1
y luego se le anexa l2
.
Concadenar (concat
) | (flatten
)
Dada una lista de listas devuelve una única lista. Creada a partir de la anexión de las listas en el orden de la lista madre.
Inicializar (init
)
Crea una lista del tamaño especificado aplicando una función f
de firma int -> 'a
a cada número de izquierda a derecha. Ej: [f 0; f 1; ...; f (len-1)]
El n
elemento (nth
)
Devuelve el n
elemento de una lista dada. De dar un n
negativo o más grande que la longitud del la lista se devuelve el error correspondiente. (El primer elemento es el 0
).
”Mapear” (map
)
Aplica a cada elemento de una lista una función de firma 'a -> 'b
. El resultado dado [a1; ...; an]
es [f a1; ...; f an]
.
”Mapear x 2”(map2
)
Aplica a cada elemento de las dos listas, conjuntamente, una función de firma 'a -> 'b -> 'c
. El resultado dado [a1; ...; an] [b1; ...; bn]
es [f a1 b1; ...; f an bn]
.
Las dos listas deben tener la misma longitud, de no ser así se devolverá un error.
Combinar (combine
)
Dadas dos listas iguales crea una lista con pares formados de los elementos parejos de cada lista. Dados
Separar (split
)
Dado una lista de pares, separarlo en dos listas con los elementos de cada par. La operación contraria a combine
. Dado
Buscar (find
)
Busca un elemento que cumpla la condición f
, de no encontrarse devuelve un fallo.
Filtrar (filter
)
-
Variante NO terminal
-
Variante terminal
Partición (partition
)
Dada una lista se devuelve un par de listas, una con todos los elementos que cumplieron f
y otra con los que no.
-
Variante NO terminal
-
Variante terminal (“Literalmente” lo mismo pero con acumuladores)
Para todos (for_all
)
Dada una lista comprobar si todos sus elementos cumplen una condición f
.
¿Existe? (exists
)
Dada una lista, comprobar si existe algún elemento que cumpla la condición f
.
¿Está presente? (mem
)
Dada una lista busca un elemento y devuelve si está presente o no.
Plegar izquierda (fold_left
)
Aplica recursivamente una función f
de firma 'a -> 'b -> 'a
, sobre un elemento y el resultado de la operación anterior. Ejemplo:
Plegar derecha (fold_right
)
La operación contraria a fold_left
. Esta operación al contrario que fold_left
no es recursiva.