module HaskellWorks.Data.Foldable ( foldFirst , foldLast ) where foldFirst :: Foldable t => t a -> Maybe a foldFirst :: forall (t :: * -> *) a. Foldable t => t a -> Maybe a foldFirst = forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr (forall a b. a -> b -> a const forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. a -> Maybe a Just) forall a. Maybe a Nothing {-# INLINE foldFirst #-} foldLast :: Foldable t => t a -> Maybe a foldLast :: forall (t :: * -> *) a. Foldable t => t a -> Maybe a foldLast = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl forall a. Maybe a -> a -> Maybe a go forall a. Maybe a Nothing where go :: Maybe a -> a -> Maybe a go :: forall a. Maybe a -> a -> Maybe a go Maybe a _ = forall a. a -> Maybe a Just {-# INLINE foldLast #-}