Programa en Haskell Tipos de datos pasadas como funciones # 3
En esta lista de programas ahora abordaremos el lenguaje de programación llamado haskell el cual esta orientado a un paradigma de programación funcional donde la sintaxis y el código están más claros y es más intuitivo entenderlo.
Tercer programa funciones en haskell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{- | |
Reversa de una lista | |
-} | |
--reversa []=[] | |
--reversa x:xs = (reversa xs) ++ [x] | |
{- | |
Función cabeza | |
Cabeza l: devuelve el primer elemento de una lista | |
Función cola | |
Cola l: devuelve la lista resultante de eliminar el primer elemento de la lista l | |
Función inicio | |
Inicio l: Devuelve la lista resultante de eliminar el último elemento de la lista | |
Función último | |
Último l: Devuelve el último elemento de la lista l | |
-} | |
reversa [] = [] | |
reversa (x : xs) = (reversa xs) ++ [x] | |
--Complejidad O(1) | |
cabeza [] = error "La lista no contiene ningun elemento" | |
cabeza (x : xs) = x | |
--Complejidad O(1) | |
cola [] = error "La lista no contiene ningun elemento" | |
cola (x : xs) = xs | |
--Complejidad O(n) | |
inicio [] = error "La lista no contiene ningun elemento" | |
inicio (x : xs) = if (xs /= []) then | |
x :(inicio (xs)) | |
else [] | |
--Complejidad O(n) | |
ultimo [] = error "La lista no contiene ningun elemento" | |
ultimo (x : xs) = if (xs == []) then x else (ultimo xs) | |
--Complejidad n^2 | |
inicio2 = reversa.cola.reversa | |
ultimo2 = cabeza.reversa | |
{- | |
Ejercicio. | |
Toma n l : Dado n un natural y una lista l devuelve los primeros n elementos de la lista | |
-} | |
toma 0 xs = [] | |
toma n [] = error "Lista vacia" | |
toma n (x : xs) = x:toma (n-1) xs | |
{- | |
Ejercicio 2. | |
Dado n un natural y una lista l, elimina los primeros n elementos de la lista | |
-} | |
--elimina::Integer->Lista l -> Lista l | |
elimina 0 xs = xs | |
elimina n [] = error "Lista vacia" | |
elimina n (x : xs) = elimina (n-1) xs |
RETO DEL BLOG, PROPÓN UN PROGRAMA MEJORADO Y CON SUS RESPECTIVAS EXCEPCIONES QUE PODRÍA TENER
Te sirven mis contenidos y quieres ayudarme a crecer invitame un chicle
Quieres ganar dinero acortando enlaces entonces registrate en Adfly
Comentarios
Publicar un comentario