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