{-# LANGUAGE LambdaCase #-} -- | Utils for Maybe data type module Haskus.Utils.Maybe ( onNothing , onNothingM , fromMaybeM , headMaybe , module Data.Maybe ) where import Data.Maybe -- | Flipped `fromMaybe` onNothing :: Maybe a -> a -> a onNothing = flip fromMaybe -- | Flipped `fromMaybeM` onNothingM :: Monad m => m (Maybe a) -> m a -> m a onNothingM = flip fromMaybeM -- | fromMaybe in a Monad fromMaybeM :: Monad m => m a -> m (Maybe a) -> m a fromMaybeM v f = f >>= \case Nothing -> v Just x -> return x -- | Get the head of the list if the latter is not empty headMaybe :: [a] -> Maybe a headMaybe [] = Nothing headMaybe (x:_) = Just x