Skip to content

Instantly share code, notes, and snippets.

@gpratoe
Created April 21, 2021 22:52
Show Gist options
  • Save gpratoe/582cd13fd7c78b4ac8690901c4a54572 to your computer and use it in GitHub Desktop.
Save gpratoe/582cd13fd7c78b4ac8690901c4a54572 to your computer and use it in GitHub Desktop.
Soluciones ejercicios Haskell mumuki UNC (3. Introducción a los Tipos de Datos) - https://mumuki.io/introalgo-unc/lessons/187-programacion-funcional-introduccion-a-los-tipos-de-datos
--Ejercicio 4: Un poco más de inferencia
tipoDeXEnEsAdulta = "numero"
tipoDeRetornoEnEsAdulta = "booleano"
tipoDeXEnEsVacio = "string"
tipoDeRetornoEnEsVacio = "booleano"
--Ejercicio 6: Inferencia y composición, revisada
largoEsPar :: String -> Bool
largoEsPar = even.length
--Ejercicio 7: Tipando constantes
edadDeAgus :: Int
edadDeAgus = 15
nombreDeAgus :: String
nombreDeAgus = "Agustín"
estaHartoAgus :: Bool
estaHartoAgus = False
inicialDeAgus :: Char
inicialDeAgus = 'a'
--Ejercicio 8: Tipando funciones
esPar :: Int -> Bool
esPar unNumero = (rem unNumero 2) == 0
cantidadDeLetras :: String -> Int
cantidadDeLetras unaPalabra = length unaPalabra
--Ejercicio 9: Tipando más funciones
nombreCompleto :: String -> String -> String -> String
nombreCompleto nombre sNombre apellido = nombre ++" "++sNombre++" "++apellido
--Ejercicio 10: ¡Clases de tipos!
doble :: Num a => a -> a
doble x = x*2
--Ejercicio 11: Tipos enteros y no tanto
esPar :: Int -> Bool
esPar numero = rem numero 2 == 0
porcentaje :: Float -> Float -> Float
porcentaje cantidad total = cantidad * 100 / total
--Ejercicio 12: Más clases de tipos
funcionMisteriosa1 :: Num a => a -> a
funcionMisteriosa1 x = x * x + x
funcionMisteriosa2 :: Show a => a -> Int
funcionMisteriosa2 = length.show
--Ejercicio 13: Restricciones múltiples
estaEntre :: Ord a => a -> a -> a -> Bool
estaEntre valor menor mayor = valor >= menor && valor <= mayor
sonIgualesOEstaEntre :: (Ord a, Ord b) => a ->a -> b -> b -> b -> Bool
sonIgualesOEstaEntre unValor otroValor valorEntre menor mayor = unValor == otroValor || estaEntre valorEntre menor mayor
--Ejercicio 15: Juntando todo
ignoraElPrimero :: a -> b -> b
ignoraElPrimero primero segundo = segundo
sumarTres :: Num a => a -> a -> a -> a
sumarTres uno otro otroMas = uno + otro + otroMas
compararSi :: Eq a => Bool -> a -> a -> Bool
compararSi condicion uno otro = not condicion || uno == otro
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment