From 04dc8d282f9416ed53779d3b8337b677f8b3c807 Mon Sep 17 00:00:00 2001 From: Mikolaj Konarski Date: Wed, 7 May 2025 12:09:29 +0200 Subject: Factor out kVToDSum --- src/Data/Dependent/EnumMap/Strict/Internal.hs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Data/Dependent/EnumMap/Strict/Internal.hs b/src/Data/Dependent/EnumMap/Strict/Internal.hs index c9dbcf1..85fa621 100644 --- a/src/Data/Dependent/EnumMap/Strict/Internal.hs +++ b/src/Data/Dependent/EnumMap/Strict/Internal.hs @@ -35,6 +35,9 @@ class Enum1 f where dSumToKV :: Enum1 k => DSum k v -> (Int, KV k v) dSumToKV (k :=> v) = let (i, inf) = fromEnum1 k in (i, KV inf v) +kVToDSum :: Enum1 k => (Int, KV k v) -> DSum k v +kVToDSum (i, KV inf v) = case toEnum1 i inf of Some k -> k :=> coe1 v + -- * Construction empty :: DEnumMap k v @@ -314,14 +317,10 @@ toList = toAscList -- ** Ordered lists toAscList :: Enum1 k => DEnumMap k v -> [DSum k v] -toAscList (DEnumMap m) = - map (\(i, KV inf v) -> case toEnum1 i inf of Some k -> k :=> coe1 v) - (IM.toAscList m) +toAscList (DEnumMap m) = map kVToDSum (IM.toAscList m) toDescList :: Enum1 k => DEnumMap k v -> [DSum k v] -toDescList (DEnumMap m) = - map (\(i, KV inf v) -> case toEnum1 i inf of Some k -> k :=> coe1 v) - (IM.toDescList m) +toDescList (DEnumMap m) = map kVToDSum (IM.toDescList m) -- * Filter @@ -375,9 +374,7 @@ partitionWithKey f (DEnumMap m) = -- minViewWithKey maxViewWithKey :: Enum1 k => DEnumMap k v -> Maybe (DSum k v, DEnumMap k v) -maxViewWithKey (DEnumMap m) = - bimap (\(i, KV inf v) -> case toEnum1 i inf of Some k -> k :=> coe1 v) DEnumMap - <$> IM.maxViewWithKey m +maxViewWithKey (DEnumMap m) = bimap kVToDSum DEnumMap <$> IM.maxViewWithKey m -- * Helpers -- cgit v1.2.3-70-g09d2