Haskell Hero
Haskell Hero es un manual interactivo del lenguaje Haskell para principiantes.
|
|
Maybe¿Por qué Maybe?Ejemplo
Definid la función find [1,2,3,4,5] 3 ~>* 3 find "qwertz" 't' ~>* 5
Puede parecer que no es nada difícil. Sin embargo, un problema surge cuando el elemento Quizás devuelva algo, quizás no
EL tipo data Maybe a = Nothing | Just a La caja Maybe Int contiene por ejemplo valores
Just 5 Just 4 Just (-6) Nothing Just 3 Just 0
Podemos entonces definir la función
find :: Eq a => [a] -> a -> Maybe Int
find s x = find1 s x 1
find1 :: Eq a => [a] -> a -> Int -> Maybe Int
find1 [] _ _ = Nothing
find1 (y:s) x n = if y == x then n
else find1 s x (n+1)
La función find1 es una función auxiliar. La hemos definido porque necesitamos guardar la información sobre el número de elementos que ya hemos examinado cuando recorriendo la lista. Esta información se encuentra en el tercer parámetro.
|