Don't use lazy unboxed bindings in strictToLazyST. Write out what we
want explicity using case expressions.
strictToLazyST :: PrelST.ST s a -> ST s a
strictToLazyST (PrelST.ST m) = ST $ \s ->
let
strictToLazyST :: PrelST.ST s a -> ST s a
strictToLazyST (PrelST.ST m) = ST $ \s ->
let
- PrelST.S# s# = s
- PrelST.STret s2# r = m s#
+ pr = case s of { PrelST.S# s# -> m s# }
+ r = case pr of { PrelST.STret s2# r -> r }
+ s' = case pr of { PrelST.STret s2# r -> PrelST.S# s2# }
lazyToStrictST :: ST s a -> PrelST.ST s a
lazyToStrictST (ST m) = PrelST.ST $ \s ->
lazyToStrictST :: ST s a -> PrelST.ST s a
lazyToStrictST (ST m) = PrelST.ST $ \s ->