packages feed

effectful-st-0.0.0.1: README.md

# `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.