MyNixOS website logo
Description

Essentially the Maybe type with error messages.

This is a very simple type:

data Exceptional x
  = Failure String
  | Success x

It's much like Maybe, except instead of Nothing, we have Failure String.

A comparison could also be made to Either String. I made this library because I was dissatisfied with the Monad instance for Either. In this type, fail = Failure. It's rather simple.

Changes

0.3.0.0

Fix erroneous behavior in foldExceptional function added in version 0.2. This release actually does break (or rather fix) the foldExceptional function, so be careful.

0.2.0.0

Add exceptional function to encapsulate ordinary exceptions in the Exceptional monad. Add folding functions.

This release does not actually break the API, however I was rather tired when I chose the version number. This should be 0.1.6.

0.1.5.0

Add exceptIO function to encapsulate IO errors in the Exceptional monad.

0.1.4.3

Fix bug where exceptional won't compile on base < 4.8. Also move the changelog back to the description so it's more visible.

0.1.4.2

Moved change log to a separate file so Hackage displays it correctly.

0.1.4.1

Documentation enhancements/fixes.

0.1.4.0

Added fromMaybe and toMaybe functions, and a link to the bug tracker.

0.1.3.0

Fixed a typo. 0.1.2.0 won't build. Also added definition of empty for Alternative.

0.1.2.0

Added fromEither and toEither functions.

0.1.1.3

Hackage is terrible. Yet another formatting fix.

0.1.1.2

Yet another formatting fix.

0.1.1.1

Formatting fix to the haddock documentation.

0.1.1.0

Add runExceptional function.

0.1.0.1

Minor documentation changes. No changes to the API.

0.1.0.0

Initial version

exceptional

This is a Haskell library that exists to house a type:

data Exceptional x
  = Failure String
  | Success x

It's much like Maybe, except instead of Nothing, we have Failure String.

A comparison could also be made to Either String. I made this library because I was dissatisfied with the Monad instance for Either. In this type, fail = Failure. It's rather simple.

Installing

cabal install exceptional

Or, add exceptional to the build-depends field in your .cabal file.

Metadata

Version

0.3.0.0

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