--jednoducha verze, stejna jako lookup z Data.List lookUp :: Eq k => k -> [(k, v)] -> Maybe v lookUp _ [] = Nothing lookUp k ((l, v):r) | k == l = Just v | otherwise = lookUp k r --4nasobny lookup --(prvni nalezenou hodnotu pouzije jako klic pro druhe hledani, atd.) lookUp4 :: Eq a => a -> [(a, a)] -> Maybe a lookUp4 k s = case lookUp k s of Nothing -> Nothing Just s1 -> case lookUp s1 s of Nothing -> Nothing Just s2 -> case lookUp s2 s of Nothing -> Nothing Just s3 -> lookUp s3 s --pomucka andThen Nothing f = Nothing andThen (Just a) f = f a --trochu lepsi lookup4. `andThen` jde chapat jako strednik z Ccka. lookUp4' k s = lookUp k s `andThen` \k -> lookUp k s `andThen` \k -> lookUp k s `andThen` \k -> lookUp k s