module Data.AssocList.List.Comparison
(
sortKeys
) where
import Data.AssocList.List.Concept
import qualified Data.List
import Prelude ()
import Data.Functor.Contravariant (Comparison (..), contramap)
sortKeys :: Comparison a -> AssocList a b -> AssocList a b
sortKeys :: Comparison a -> AssocList a b -> AssocList a b
sortKeys Comparison a
cmp =
let
cmp' :: Comparison (a, b)
cmp' = ((a, b) -> a) -> Comparison a -> Comparison (a, b)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
contramap (\(a
a, b
b) -> a
a) Comparison a
cmp
in
((a, b) -> (a, b) -> Ordering) -> AssocList a b -> AssocList a b
forall a. (a -> a -> Ordering) -> [a] -> [a]
Data.List.sortBy (Comparison (a, b) -> (a, b) -> (a, b) -> Ordering
forall a. Comparison a -> a -> a -> Ordering
getComparison Comparison (a, b)
forall b. Comparison (a, b)
cmp')