Op y Fun Comunes Funciosnes Para Listas ^ potencia 1)head :: [a] -> a devuelve el 1er elem de la list error si lista esta vacia mod :: Integral a => a -> a -> a 2)last :: [a] -> a mod modulo 1ro con 2do devuelve el ult elem de la list error si lista esta vacia max :: Ord a => a -> a -> a maximo de 2 elem 3)tail :: [a] -> [a] min :: Ord a => a -> a -> a minimo de 2 elem 4)init :: [a] -> [a] (a, b) -> a fst 1er elem de una tupla par 5)length :: [a] -> Int even :: a => a -> Bool True si es par False caso contrario 6)take :: Int -> [a] -> [a] Odd :: a => a -> Bool True si es impar False caso contrario fst :: (a, b) -> a devulve el primer eleemto de la tupla div :: Int a => a -> a -> a función división div 3 2 =1 devuelve la list sin el ult error si lista esta vacia elem 9) dropWhile :: (a -> Bool) -> [a] -> [a] devuelve una lista resultado de elimnar los elementos que cuplan la condición (encuentra uno que no cumpla y ahí termina) 17) any :: (a -> Bool) -> [a] -> Bool 10) map :: (a -> b) -> [a] -> [b] devuelve una lista construida aplicando una función (el primer argumento) a todos los elementos en una lista que se pasa como el segundo argumento 18) and :: [Bool] -> Bool Aplica el and cada uno de los elementos de lalista en caso de encontrar un False el res te dara False y si todos son True te dara True 11) zip :: [a] -> [b] -> [(a, b)] 19) or :: [Bool] -> Bool Aplica el or a cada uno de los elementos de lalista en caso de encontrar un True el res te dara True y si todos son False te dara false hace una lista de tuplas, cada uno de los cuales contiene elementos de ambas listas en la misma posición devuelve True si al menos un elemento de la lista cumple la condición de la función 12) zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] hace una lista, sus elementos se calculan a partir de la función y los elementos de las listas de entrada que ocurren en la misma posición en ambas listas 20) máximum :: [a] -> a 13) concat :: [[a]] -> [a] Dado una matriz lo concatetenamos en un solo areeglo 21) minimum :: [a] -> a 14) reverse :: [a] - > [a] Dado un arreglo te devuelve la misma pero invertida 22) (:) :: a -> [a] -> [a] Inserta el elemento dado al inicio de la lista y te devuelve la lista luego de dicha insertacion 7)takeWhile :: (a -> Bool) -> [a] -> [a] 15) sum :: Int a => [a] -> a devuelve una lista que cumpla la condición dada ( los que den true con la condición encuentra uno que no cumpla y ahí termina) Dado un arreglo de enteros te devulve el resultado de la suma de todos ellos 23) (++) :: [a] -> [a] -> [a] Une dos lista en una sola pero deven ser del mismo tipo 8)drop :: Int -> [a] -> [a] 16) filter :: (a -> Bool) -> [a] -> [a] elimina el numero de elementos dado de la lista dada Devuelve una lista que contiene todos los elementos que cumplen la condicion de la function dada (las que dan True) devuelve la list sin el ult error si lista esta vacia elem devuelve el numero de elementos que contiene la lista crea una lista, el primer argumento determina cuántos elementos deben tomarse de la lista que se pasa como segundo argumento Dado un arreglo te devulve el elemeto de mayor valor Dado un arreglo te devulve el elemeto de menor valor 24) (!!) :: [a] -> Int -> a Te devulve el elemnto delindice que indiques Error si no encuentra dicho indice 25) foldr :: (a -> b -> b) -> b -> [a] -> b 27) (.) :: (b -> c) -> (a -> b) -> a -> c Expresion Case Foldr take [5,7,9,10,3,4][4,2,1] take 4(take 2(take 1 [5,7,9,10,3,4])) (reverse . take 10 . enumFrom) 10 [19,18,17,16,15,14,13,12,11,10] ejm1 x = case x of 'a' -> True '_' -> False Foldr (+) 5 [1,2,3,4] (+)1((+)2((+)3((+)4 5))) 15 toma el segundo argumento y el último elemento de la lista y aplica la función, luego toma el penúltimo elemento del final y el resultado, y así sucesivamente. Ver scanr para resultados intermedios. 26) foldl :: (b -> a -> b) -> b -> [a] -> b tFoldl (\x y -> 2*x + y) 4 [1,2,3] x=4->x=9->x=20->x=43 --43 -->x=4 y=1 --x=9y=2 --x=20 y=3 --r=43 ((2+).(3*).(4-)) 2 8 Se ejecuta una serie de funciones partiendo de la función del extremo derecho y al resultado de ello se lo evalua con la siguiente función de y hasi sucesivamnente 28) zipwith=PASAR A UNA LISTA HACIENDO->recibe una funcion y dos arreglos como resultado tendremos a una lista resultantede aplicar dicha funcion a ambas listas lstZipWith::(a->b->c)->[a]->[b]->[c] lstZipWith fn lstA lstB = zipWith fn lstA lstB Foldl (/) 64 [4,2,4] --2.0 toma el segundo argumento y el primer elemento de la lista y les aplica la función, luego alimenta la función con este resultado y el segundo argumento y así sucesivamente. --defnir una funcion que dada una matriz te devulva su diagonal principal f11 lstlst = map fun (zip [0..((length lstlst)-1)] lstlst) where fun (ind,arr)=arr!!ind --definir una funcion que resiva una lista y devuelvaTrue si esta ordenado ascendenteente f12 lst= and (map may (zip ((pred (head lst)):(init lst)) lst)) where may (a,b)=a<=b *Main> True&&False False