io-effects: Taming the IO monad
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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.
Properties
Versions | 0.1.0 |
---|---|
Change log | None available |
Dependencies | base (>=4.11.0.0 && <4.12 || >=4.12.0.0 && <4.13) [details] |
License | BSD-3-Clause |
Author | |
Maintainer | Ollie Charles <ollie@ocharles.org.uk> |
Category | Control |
Uploaded | by OliverCharles at 2019-07-14T20:56:42Z |
Modules
[Index] [Quick Jump]
Downloads
- io-effects-0.1.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees