mono-traversable 0.4.0.4 → 0.5.0
raw patch · 3 files changed
+37/−37 lines, 3 files
Files
- mono-traversable.cabal +1/−1
- src/Data/MinLen.hs +2/−2
- src/Data/MonoTraversable.hs +34/−34
mono-traversable.cabal view
@@ -1,5 +1,5 @@ name: mono-traversable-version: 0.4.0.4+version: 0.5.0 synopsis: Type classes for mapping, folding, and traversing monomorphic containers description: Monomorphic variants of the Functor, Foldable, and Traversable typeclasses. Contains even more experimental code for abstracting containers and sequences. homepage: https://github.com/snoyberg/mono-traversable
src/Data/MinLen.hs view
@@ -196,7 +196,7 @@ {-# INLINE minimum #-} -- | like Data.List, but not partial on a MonoFoldable-maximumBy :: MonoFoldableOrd mono+maximumBy :: MonoFoldable mono => (Element mono -> Element mono -> Ordering) -> MinLen (Succ nat) mono -> Element mono@@ -204,7 +204,7 @@ {-# INLINE maximumBy #-} -- | like Data.List, but not partial on a MonoFoldable-minimumBy :: MonoFoldableOrd mono+minimumBy :: MonoFoldable mono => (Element mono -> Element mono -> Ordering) -> MinLen (Succ nat) mono -> Element mono
src/Data/MonoTraversable.hs view
@@ -311,6 +311,26 @@ unsafeLast = lastEx {-# INLINE unsafeLast #-} + maximumByEx :: (Element mono -> Element mono -> Ordering) -> mono -> Element mono+ maximumByEx f =+ ofoldl1Ex' go+ where+ go x y =+ case f x y of+ LT -> y+ _ -> x+ {-# INLINE maximumByEx #-}++ minimumByEx :: (Element mono -> Element mono -> Ordering) -> mono -> Element mono+ minimumByEx f =+ ofoldl1Ex' go+ where+ go x y =+ case f x y of+ GT -> y+ _ -> x+ {-# INLINE minimumByEx #-}+ instance MonoFoldable S.ByteString where ofoldMap f = ofoldr (mappend . f) mempty ofoldr = S.foldr@@ -489,6 +509,8 @@ lastEx = V.last unsafeHead = V.unsafeHead unsafeLast = V.unsafeLast+ maximumByEx = V.maximumBy+ minimumByEx = V.minimumBy {-# INLINE ofoldMap #-} {-# INLINE ofoldr #-} {-# INLINE ofoldl' #-}@@ -503,6 +525,8 @@ {-# INLINE headEx #-} {-# INLINE lastEx #-} {-# INLINE unsafeHead #-}+ {-# INLINE maximumByEx #-}+ {-# INLINE minimumByEx #-} instance MonoFoldable (Set e) instance MonoFoldable (HashSet e) instance MonoFoldable (DList a) where@@ -526,6 +550,8 @@ lastEx = U.last unsafeHead = U.unsafeHead unsafeLast = U.unsafeLast+ maximumByEx = U.maximumBy+ minimumByEx = U.minimumBy {-# INLINE ofoldMap #-} {-# INLINE ofoldr #-} {-# INLINE ofoldl' #-}@@ -540,6 +566,8 @@ {-# INLINE headEx #-} {-# INLINE lastEx #-} {-# INLINE unsafeHead #-}+ {-# INLINE maximumByEx #-}+ {-# INLINE minimumByEx #-} instance VS.Storable a => MonoFoldable (VS.Vector a) where ofoldMap f = ofoldr (mappend . f) mempty ofoldr = VS.foldr@@ -555,6 +583,8 @@ lastEx = VS.last unsafeHead = VS.unsafeHead unsafeLast = VS.unsafeLast+ maximumByEx = VS.maximumBy+ minimumByEx = VS.minimumBy {-# INLINE ofoldMap #-} {-# INLINE ofoldr #-} {-# INLINE ofoldl' #-}@@ -569,6 +599,8 @@ {-# INLINE headEx #-} {-# INLINE lastEx #-} {-# INLINE unsafeHead #-}+ {-# INLINE maximumByEx #-}+ {-# INLINE minimumByEx #-} instance MonoFoldable (Either a b) where ofoldMap f = ofoldr (mappend . f) mempty ofoldr f b (Right a) = f a b@@ -653,30 +685,10 @@ maximumEx = maximumByEx compare {-# INLINE maximumEx #-} - maximumByEx :: (Element mono -> Element mono -> Ordering) -> mono -> Element mono- maximumByEx f =- ofoldl1Ex' go- where- go x y =- case f x y of- LT -> y- _ -> x- {-# INLINE maximumByEx #-}- minimumEx :: mono -> Element mono minimumEx = minimumByEx compare {-# INLINE minimumEx #-} - minimumByEx :: (Element mono -> Element mono -> Ordering) -> mono -> Element mono- minimumByEx f =- ofoldl1Ex' go- where- go x y =- case f x y of- GT -> y- _ -> x- {-# INLINE minimumByEx #-}- instance MonoFoldableOrd S.ByteString where maximumEx = S.maximum {-# INLINE maximumEx #-}@@ -712,33 +724,21 @@ instance Ord v => MonoFoldableOrd (HashMap k v) instance Ord a => MonoFoldableOrd (Vector a) where maximumEx = V.maximum- maximumByEx = V.maximumBy minimumEx = V.minimum- minimumByEx = V.minimumBy {-# INLINE maximumEx #-}- {-# INLINE maximumByEx #-} {-# INLINE minimumEx #-}- {-# INLINE minimumByEx #-} instance Ord e => MonoFoldableOrd (Set e) instance Ord e => MonoFoldableOrd (HashSet e) instance (U.Unbox a, Ord a) => MonoFoldableOrd (U.Vector a) where maximumEx = U.maximum- maximumByEx = U.maximumBy minimumEx = U.minimum- minimumByEx = U.minimumBy {-# INLINE maximumEx #-}- {-# INLINE maximumByEx #-} {-# INLINE minimumEx #-}- {-# INLINE minimumByEx #-} instance (Ord a, VS.Storable a) => MonoFoldableOrd (VS.Vector a) where maximumEx = VS.maximum- maximumByEx = VS.maximumBy minimumEx = VS.minimum- minimumByEx = VS.minimumBy {-# INLINE maximumEx #-}- {-# INLINE maximumByEx #-} {-# INLINE minimumEx #-}- {-# INLINE minimumByEx #-} instance Ord b => MonoFoldableOrd (Either a b) where maximumMay :: MonoFoldableOrd mono => mono -> Maybe (Element mono)@@ -747,7 +747,7 @@ | otherwise = Just (maximumEx mono) {-# INLINE maximumMay #-} -maximumByMay :: MonoFoldableOrd mono+maximumByMay :: MonoFoldable mono => (Element mono -> Element mono -> Ordering) -> mono -> Maybe (Element mono)@@ -762,7 +762,7 @@ | otherwise = Just (minimumEx mono) {-# INLINE minimumMay #-} -minimumByMay :: MonoFoldableOrd mono+minimumByMay :: MonoFoldable mono => (Element mono -> Element mono -> Ordering) -> mono -> Maybe (Element mono)