Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.Effect.Fresh
Documentation
fresh :: (Member Fresh sig, Carrier sig m) => m Int Source #
Produce a fresh (i.e. unique) Int
.
run (runFresh (replicateM n fresh)) == nub (run (runFresh (replicateM n fresh)))
resetFresh :: (Member Fresh sig, Carrier sig m) => m a -> m a Source #
Reset the fresh counter after running a computation.
run (runFresh (resetFresh (replicateM m fresh) *> replicateM n fresh)) == run (runFresh (replicateM n fresh))
runFresh :: (Carrier sig m, Effect sig, Monad m) => Eff (FreshC m) a -> m a Source #
Run a Fresh
effect counting up from 0.
run (runFresh (replicateM n fresh)) == [0..pred n]
run (runFresh (replicateM n fresh *> pure b)) == b