module MonusWeightedSearch.Examples.Sort where
import Data.Monus
import Control.Monad.Heap
monusSort :: Monus m => [m] -> [m]
monusSort :: forall m. Monus m => [m] -> [m]
monusSort = (((), m) -> m) -> [((), m)] -> [m]
forall a b. (a -> b) -> [a] -> [b]
map ((), m) -> m
forall a b. (a, b) -> b
snd ([((), m)] -> [m]) -> ([m] -> [((), m)]) -> [m] -> [m]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Heap m () -> [((), m)]
forall w a. Monus w => Heap w a -> [(a, w)]
search (Heap m () -> [((), m)]) -> ([m] -> Heap m ()) -> [m] -> [((), m)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [((), m)] -> Heap m ()
forall (m :: * -> *) a w. Applicative m => [(a, w)] -> HeapT w m a
fromList ([((), m)] -> Heap m ()) -> ([m] -> [((), m)]) -> [m] -> Heap m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (m -> ((), m)) -> [m] -> [((), m)]
forall a b. (a -> b) -> [a] -> [b]
map ((),)
{-# INLINE monusSort #-}