module Maybe where import List (map); import ListLive (cons); import Function (id, ($), (.)); import Prelude (); data Maybe a = Nothing | Just a; maybe :: b -> (a -> b) -> Maybe a -> b; maybe :: forall b a. b -> (a -> b) -> Maybe a -> b maybe b x a -> b _ Maybe a Nothing = b x; maybe b _ a -> b f (Just a a) = a -> b f a a; fromMaybe :: a -> Maybe a -> a; fromMaybe :: forall a. a -> Maybe a -> a fromMaybe a a = a -> (a -> a) -> Maybe a -> a forall b a. b -> (a -> b) -> Maybe a -> b maybe a a a -> a forall a. a -> a id; catMaybes :: [Maybe a] -> [a]; catMaybes :: forall a. [Maybe a] -> [a] catMaybes [] = []; catMaybes (Maybe a mx : [Maybe a] xs) = ([a] -> [a]) -> (a -> [a] -> [a]) -> Maybe a -> [a] -> [a] forall b a. b -> (a -> b) -> Maybe a -> b maybe [a] -> [a] forall a. a -> a id a -> [a] -> [a] forall a. a -> [a] -> [a] cons Maybe a mx ([a] -> [a]) -> [a] -> [a] forall a b. (a -> b) -> a -> b $ [Maybe a] -> [a] forall a. [Maybe a] -> [a] catMaybes [Maybe a] xs; mapMaybe :: (a -> Maybe b) -> [a] -> [b]; mapMaybe :: forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe a -> Maybe b f = [Maybe b] -> [b] forall a. [Maybe a] -> [a] catMaybes ([Maybe b] -> [b]) -> ([a] -> [Maybe b]) -> [a] -> [b] forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> Maybe b) -> [a] -> [Maybe b] forall a b. (a -> b) -> [a] -> [b] map a -> Maybe b f;