Haskell Hero
Interaktivní učebnice pro začínající Haskellisty
|
MaybeProč Maybe?Příklad
Definujte funkci find [1,2,3,4,5] 3 ~>* 3 find "qwertz" 't' ~>* 5
Může se zdát, že to přece nemůže být nic těžkého. Problém přichází v případě, že prvek Možná něco vrátím, možná ne
Typ data Maybe a = Nothing | Just aKrabička Maybe Int obsahuje například hodnoty
Just 5 Just 4 Just (-6) Nothing Just 3 Just 0
Funkci 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 Just n else find1 s x (n+1)Funkce find1 je pomocná funkce. Definovali jsme ji z toho důvodu, že si potřebujeme při procházení seznamu uchovávat informaci o tom, kolik prvků jsme již prošli. Tato informace se vždy nachází ve třetím argumentu.
|