ww_sort_1 body_18 = let wrapper_20 :: (forall s_21 . [GHC.Base.Int] -> GHC.ST.ST s_21 [GHC.Base.Int] ) -> [GHC.Base.Int] -> [GHC.Base.Int] wrapper_20 work_22 xs_23 = GHC.ST.runST (work_22 xs_23 ) worker_19 :: forall s_24 . ([GHC.Base.Int] -> [GHC.Base.Int]) -> [GHC.Base.Int] -> GHC.ST.ST s_24 [GHC.Base.Int] worker_19 code_25 xs_26 = GHC.Base.return (code_25 xs_26 ) in wrapper_20 (\x1_33 -> let x0_32 = body_18 in case (body_18, x1_33) of (code_25, xs_26) -> GHC.Base.return (code_25 xs_26 ) ) sort x_29 = let body_30 GHC.Base.[] = GHC.Base.[] body_30 (x_27 GHC.Base.: xs_28) = sort (GHC.List.filter ( GHC.Base.< x_27) xs_28 ) GHC.Base.++ ([x_27] GHC.Base.++ sort (GHC.List.filter ( GHC.Base.>= x_27) xs_28 ) ) in let wrapper_20 :: (forall s_21 . [GHC.Base.Int] -> GHC.ST.ST s_21 [GHC.Base.Int] ) -> [GHC.Base.Int] -> [GHC.Base.Int] wrapper_20 work_22 xs_23 = GHC.ST.runST (work_22 xs_23 ) worker_19 :: forall s_24 . ([GHC.Base.Int] -> [GHC.Base.Int]) -> [GHC.Base.Int] -> GHC.ST.ST s_24 [GHC.Base.Int] worker_19 code_25 xs_26 = GHC.Base.return (code_25 xs_26 ) in wrapper_20 (\x1_35 -> let x0_34 = body_30 in case (body_30, x1_35) of (code_25, xs_26) -> GHC.Base.return (code_25 xs_26 ) ) x_29 (LetE [ValD (VarP x0_32) (NormalB (VarE body_18)) []] (CaseE (TupE [VarE body_18,VarE x1_33]) [Match (TupP [VarP code_25,VarP xs_26]) (NormalB (AppE (VarE GHC.Base.return) (AppE (VarE code_25) (VarE xs_26)))) []]),{body_18,x1_33}) (LetE [ValD (VarP x0_34) (NormalB (VarE body_30)) []] (CaseE (TupE [VarE body_30,VarE x1_35]) [Match (TupP [VarP code_25,VarP xs_26]) (NormalB (AppE (VarE GHC.Base.return) (AppE (VarE code_25) (VarE xs_26)))) []]),{body_30,x1_35}) After: dce Used: ["eliminated binder for : {x0_32}","eliminated binder for : {x0_34}"] ww_sort_1 body_18 = let wrapper_20 :: (forall s_21 . [GHC.Base.Int] -> GHC.ST.ST s_21 [GHC.Base.Int] ) -> [GHC.Base.Int] -> [GHC.Base.Int] wrapper_20 work_22 xs_23 = GHC.ST.runST (work_22 xs_23 ) worker_19 :: forall s_24 . ([GHC.Base.Int] -> [GHC.Base.Int]) -> [GHC.Base.Int] -> GHC.ST.ST s_24 [GHC.Base.Int] worker_19 code_25 xs_26 = GHC.Base.return (code_25 xs_26 ) in wrapper_20 (\x1_33 -> case (body_18, x1_33) of (code_25, xs_26) -> GHC.Base.return (code_25 xs_26 ) ) sort x_29 = let body_30 GHC.Base.[] = GHC.Base.[] body_30 (x_27 GHC.Base.: xs_28) = sort (GHC.List.filter ( GHC.Base.< x_27) xs_28 ) GHC.Base.++ ([x_27] GHC.Base.++ sort (GHC.List.filter ( GHC.Base.>= x_27) xs_28 ) ) in let wrapper_20 :: (forall s_21 . [GHC.Base.Int] -> GHC.ST.ST s_21 [GHC.Base.Int] ) -> [GHC.Base.Int] -> [GHC.Base.Int] wrapper_20 work_22 xs_23 = GHC.ST.runST (work_22 xs_23 ) worker_19 :: forall s_24 . ([GHC.Base.Int] -> [GHC.Base.Int]) -> [GHC.Base.Int] -> GHC.ST.ST s_24 [GHC.Base.Int] worker_19 code_25 xs_26 = GHC.Base.return (code_25 xs_26 ) in wrapper_20 (\x1_35 -> case (body_30, x1_35) of (code_25, xs_26) -> GHC.Base.return (code_25 xs_26 ) ) x_29