MyNixOS website logo
Description

ST-style mutation for effectful.

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 to provide a safe way to run the effect purely.

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 to provide a safe way to run the effect purely.

This project follows the Haskell Package Versioning Policy.

Copyright

Each contributor waives their Copyright and Related Rights to this work according to CC0-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.

Metadata

Version

0.0.0.1

License

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows