homepage: https://sr.ht/~qrpnxz/effectful-st/
changelog-type: markdown
hash: 377c90df7f2214da52bb5f6cc2bf40a36eac097ef2e4bf8e9fa38889feb6af25
test-bench-deps: {}
maintainer: qrpnxz@hyperlife.xyz
synopsis: '`ST`-style mutation for `effectful`.'
changelog: |
  # Revision history for effectful-st

  ## 0.0.0.0 -- 2022-09-06

  * First version. Released on an unsuspecting world.
basic-deps:
  base: '>=4.13 && <4.18'
  effectful-core: '>1 && <2.2'
  primitive: '>=0.7 && <0.8'
all-versions:
- 0.0.0.0
author: Russell Hernandez Ruiz
latest: 0.0.0.0
description-type: markdown
description: |
  # `effectful-st`

  Version 0.0.0.0

  ## 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.
license-name: CC0-1.0

Update from Hackage at 2022-09-06T22:57:09Z
Update from Hackage at 2022-09-06T22:57:09Z
