diff --git a/src/FoldlHelp.hs b/src/FoldlHelp.hs index 32f89b447..0eed46c90 100644 --- a/src/FoldlHelp.hs +++ b/src/FoldlHelp.hs @@ -1,13 +1,15 @@ -module FoldlHelp - ( minimumOn - , premapMaybe - , module Control.Foldl - ) where +module FoldlHelp ( + minimumOn, + premapMaybe, + module Control.Foldl, +) where + import Control.Foldl import MaybeHelp +import Data.Strict.Tuple --data Maybe' a = Just' !a | Nothing' -data Pair a b = !a :!: !b +--data Pair a b = !a :!: !b minimumOn :: Ord b => (a -> b) -> Fold a (Maybe a) minimumOn f = Fold step Nothing' extract @@ -16,15 +18,15 @@ minimumOn f = Fold step Nothing' extract extract (Just' (a :!: _)) = Just a step Nothing' b = Just' (b :!: f b) step (Just' (a :!: x)) b - | y < x = Just' (b :!: y) + | y < x = Just' (b :!: y) | otherwise = Just' (a :!: x) where y = f b premapMaybe :: (a -> Maybe b) -> Fold b r -> Fold a r -{-# INLINABLE premapMaybe #-} +{-# INLINEABLE premapMaybe #-} premapMaybe f (Fold step initial extract) = Fold step' initial extract where step' x a = case f a of Nothing -> x - Just s -> step x s + Just s -> step x s