MyNixOS website logo
Description

Handling errors in the uniform framework.

A minimal package to handle errors and exception in a simple but flexible way. Includes functions to adapt the prefered method of calling IO with error handling (ErrIO) to the approaches encountered in other packages when writing applications.

Please see the README on GitHub at https://github.com/andrewufrank/uniform-error/readme

Error.hs defines an uniform approach to error: any function which can fail returns a value of - ErrIO, which is a wrapper around IO, returning a Text messages if the computation fails - ErrOrVal (which is Either Text) for functions not in the IO monad

All cases where functions use other error signaling methods must be converted as part of their integration into the uniform framework.

Especially important are the functions to convert to regular IO:

  • callIO which calls an IO function and catches a possible error return.

  • converts back functions running in ErrIO a into (normal) IO (ErrOrVal a) which is used when functions from the uniform style are used where functions in the normal IO monad are expected.

Some other functions are helpful to identify hard to track problems in Haskell:

undef to find where an undefined value is used, producing an error message.

The StartApp is a bridge between the ErrIO used here and the standard IO monad in main:: IO ()

The package depends on uniform-string.

Metadata

Version

0.1.5.1

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • 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