Funciones de Tipos a Terminos en Haskell
Hemos visto como definir funciones que dado un tipo nos retorne un tipo, definiendo constructores de tipo con la keyword type. Supongamos que queremos definir una función que dado un tipo nos retorne un valor. Además nos gustaría poder hacer pattern matching sobre los tipos recibidos como parámetro. Eso podría verse como lo siguiente type Int = "int" :: Type -> String String = "string" Obviamente las lineas de arriba no son código Haskell válido, pero veremos como lograrlo....
Funciones De Tipos a Tipos en Haskell
En Haskell estamos acostumbrados a escribir funciones de terminos a terminos. Esto son funciones que dado un valor de un tipo, retornan otro valor de algun tipo. En este punto el conjunto de los tipos y el conjunto de los terminos son dos universos separados, ya que a nadie se le ocurriría escribir algo como Int + 6. ¿O si? f :: Int -> Int f n = 2 * n g :: [Char] -> Int g [] = 0 g (x:xs) = 1 + g xs h :: String -> Bool h _ = True Supongamos que queremos escribir una función que dado un tipo nos retorne otro tipo....