# `effectful-st`
Version 0.0.0.1
## Description
An [`ST`]-style alternative to the [`Prim`] effect in [`effectful`] that
allows safely running scoped state transformations without `IOE`.
The `Prim` effect allows the use of [`PrimMonad`] on `Eff` without
allowing arbitrary `IO`. However, there is no safe way to run the
effect without introducing the `IOE` effect because `Prim` has no
way of delimiting the scope of the mutation to `runPrim`. In other
words, `Prim` is effectively acting merely as a restricted form of
`IOE` that only allows `PrimMonad`.
`STE` from this package on the other hand borrows the quantification
trick from [`Control.Monad.ST`][`ST`] to provide a safe way to run
the effect purely.
This project follows the [Haskell Package Versioning Policy][PVP].
[`ST`]: https://hackage.haskell.org/package/base/docs/Control-Monad-ST.html
[`Prim`]: https://hackage.haskell.org/package/effectful-core/docs/Effectful-Prim.html
[`effectful`]: https://hackage.haskell.org/package/effectful-core
[`PrimMonad`]: https://hackage.haskell.org/package/primitive/docs/Control-Monad-Primitive.html#t:PrimMonad
[PVP]: https://pvp.haskell.org/
## Copyright
Each contributor waives their Copyright and Related Rights to
this work according to [CC0-1.0].
[CC0-1.0]: https://creativecommons.org/publicdomain/zero/1.0/
## Patent
Each contributor licenses you to do everything with this work that
would otherwise infringe any patent claims they can license or become
able to license.