IORef package:fused-effects

A carrier for Accum effects. This carrier performs its append operations strictly and thus avoids the space leaks inherent in lazy writer monads. These appends are left-associative; as such, [] is a poor choice of monoid for computations that entail many calls to add. The Seq or DList monoids may be a superior choice. This carrier also uses an IORef to store its accumulator, which allows it a MonadUnliftIO instance, but precludes backtracking when run in conjunction with NonDet.
A carrier for the State effect. It uses an IORef internally to handle its state, and thus admits a MonadUnliftIO instance. Because the state operations are performed impurely, this carrier will not lose state effects even with nefarious uses of liftWith. Unlike the other carriers for State, this carrier's effects will not backtrack when run in conjuction with NonDet effects.