Modulefused-effects-1.1.2.7Haskell2010
Control.Carrier.Accum.IORef
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 Control.Effect.NonDet.
- 1 type
- 3 values
- Packagefused-effects-1.1.2.7
- Exports4
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceIORef.hs
Accum carrier
4 declarationsInstances11MonadTrans, Monad, Functor, MonadFix, MonadFail, Applicative, …
MonadTrans (AccumC w)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefMonad m => Monad (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefFunctor m => Functor (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefMonadFix m => MonadFix (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefMonadFail m => MonadFail (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefApplicative m => Applicative (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefAlternative m => Alternative (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORef(Alternative m, Monad m) => MonadPlus (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefMonadIO m => MonadIO (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefMonadUnliftIO m => MonadUnliftIO (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORef(Algebra sig m, Semigroup w, MonadIO m) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORef
Accum effect
0 declarationsmodule Control.Effect.Accum