module LinearScan.IntMap where
import Debug.Trace (trace, traceShow)
import qualified Prelude
import qualified Data.IntMap
import qualified Data.IntSet
import qualified Data.List
import qualified Data.Ord
import qualified Data.Functor.Identity
import qualified LinearScan.Utils
import qualified LinearScan.Lib as Lib
#ifdef __GLASGOW_HASKELL__
import qualified GHC.Base as GHC.Base
unsafeCoerce = GHC.Base.unsafeCoerce#
#else
import qualified LinearScan.IOExts as IOExts
unsafeCoerce = IOExts.unsafeCoerce
#endif
emptyIntMap :: Data.IntMap.IntMap a1
emptyIntMap =
Data.IntMap.fromList []
coq_IntSet_forFold :: a1 -> Data.IntSet.IntSet -> (a1 -> Prelude.Int -> a1)
-> a1
coq_IntSet_forFold z m f =
Data.IntSet.foldl' f z m
coq_IntMap_groupOn :: (a1 -> Prelude.Int) -> ([] a1) -> Data.IntMap.IntMap
([] a1)
coq_IntMap_groupOn p l =
Lib.forFold emptyIntMap l (\acc x ->
let {n = p x} in
Data.IntMap.alter (\mxs ->
case mxs of {
Prelude.Just xs -> Prelude.Just ((:) x xs);
Prelude.Nothing -> Prelude.Just ((:) x [])}) n acc)