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.
|