Rec {
-- RHS size: {terms: 47, types: 28, coercions: 0, joins: 0/1}
$wgo1 [InlPrag=[2], Occ=LoopBreaker] :: IntSet -> (# Int, IntSet #)
[GblId[StrictWorker([!])], Arity=1, Str=<1L>, Unf=OtherCon []]
$wgo1
= \ (ds_sdOH :: IntSet) ->
case ds_sdOH of {
Bin bx_dcyn l_a73T r_a73U ->
case $wgo1 r_a73U of { (# ww_se6X, ww1_se6Y #) ->
(# ww_se6X,
case ww1_se6Y of wild2_X4 {
__DEFAULT -> Bin bx_dcyn l_a73T wild2_X4;
Nil -> l_a73T
} #)
};
Tip bx_dcyp bx1_dcyq ->
let {
bi_sd64 :: Int#
[LclId]
bi_sd64 = -# 63# (word2Int# (clz# bx1_dcyq)) } in
(# I# (+# bx_dcyp bi_sd64),
case and# bx1_dcyq (not# (uncheckedShiftL# 1## bi_sd64))
of ds1_X3 {
__DEFAULT -> Tip bx_dcyp ds1_X3;
0## -> Nil
} #);
Nil -> case lvl42_reKj of {}
}
Just using a strict pair instead of lazy should fix it. IntMap's definition seems pretty good and how I would define it for IntSet too, splitting the empty map case out and inlining it to potentially get rid of the Maybe.
containers/containers/src/Data/IntSet/Internal.hs
Lines 1164 to 1172 in 0c3b9ee
Core:
Just using a strict pair instead of lazy should fix it. IntMap's definition seems pretty good and how I would define it for IntSet too, splitting the empty map case out and inlining it to potentially get rid of the Maybe.
containers/containers/src/Data/IntMap/Internal.hs
Lines 2325 to 2345 in 0c3b9ee