Bluefin is an effect system for Haskell which allows you, through value-level handles, to freely mix a variety of effects including
Bluefin.EarlyReturn
, for early returnBluefin.Exception
, for exceptionsBluefin.IO
, for I/OBluefin.State
, for mutable stateBluefin.Stream
, for streams
For an introduction to Bluefin, see the docs in the
Bluefin
module.
There is an bluefin-examples
package which you can see in this
repository at
bluefin-examples/src/Bluefin/Examples
.
Tom Ellis would like to thank many individuals for their work related to effect systems. Without the work of these individuals, Bluefin would not exist.
-
Oleg Kiselyov, particularly for his work on effects and delimited continuations
-
Michael Snoyman, particularly for his work on conduit and the
ReaderT
IO
pattern -
Gabriella Gonzalez, particularly for her work on pipes
-
Alexis King, particularly for her work on effect systems and delimited continuations
-
David Feuer, particularly for his observation about handlers and rank-2 types
-
Andrzej Rybczak for his work on effectful
-
Francois Pottier for "Wandering through linear types, capabilities, and regions"
-
Jasper van de Jeugt, particularly for promoting the handle pattern
-
Michael Thompson, for his work on
streaming
-
Ningning Xie and Daan Leijen, for their work on Koka
-
Andrej Bauer and Matija Pretnar, for their work on Eff