cabal-version:
  2.0
name:
  io-effects
synopsis:
  Taming the IO monad
description:
  Welcome to @io-effects@, a light-weight yet high performance effect library with
  the aim of /taming the 'IO' monad/. The 'IO' monad is the workhorse of any
  Haskell program - the entry point of our program is @main :: IO ()@, and there
  is no way to "leave" @IO@ once you're there. However, the @IO@ monad has a huge
  amount of power - it can open files, perform network requests, and - as they
  saying goes - launch the missiles. All of these are important functions, but
  as our programs grow it becomes increasingly difficult to reason about /what/
  IO is being performed. For example, asking the question "does this program
  access my database?" is a difficult question to answer - with only @IO@, we have
  no option other than reading all of the source code.
  .
  Enter @io-effects@. Programs written using @io-effects@ are just like the  'IO'
  programs we're familiar with, but exactly what IO is being performed is
  explicitly described in the types of our programs. A program that has access to
  a database may have a type such as @Member Database es => Program es a@.
  In fact, if @es@ is truly polymorphic, this program can do nothing /but/ access
  a database. These constraints can be combined as well, so a program with the
  type @( Member Database es, Member HTTP es ) => Program es a@ is a program that
  may access a database or may make HTTP requests.
  .
  For more information, see the main "IO.Effects" module, which contains a brief
  demonstration.
license:
  BSD3
license-file:
  LICENSE
version:
  0.1.0
build-type:
  Simple
maintainer:
  Ollie Charles <ollie@ocharles.org.uk>
category:
  Control

library
  default-language:
    Haskell2010
  exposed-modules:
    IO.Effects
    IO.Effects.Exception
    IO.Effects.Internal
    IO.Effects.IORef
    IO.Effects.Lift
    -- IO.Effects.Base
    -- IO.Effects.Exception
    -- IO.Effects.Internal.Effect
    -- IO.Effects.Internal.EFFECT
    -- IO.Effects.Internal.Effects
    -- IO.Effects.Internal.Member
    -- IO.Effects.Internal.Program
    -- IO.Effects.IORefs
  hs-source-dirs:
    lib
  ghc-options:
    -Wall
  build-depends:
    base ^>= 4.11.0.0 || ^>= 4.12.0.0