Safe Haskell | Safe |
---|---|
Language | Haskell98 |
This module contains the basic data types underlying the
IOSpec
library. Most of the types and classes in this module
are described in
https://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf
The IOSpec
type.
A value of type IOSpec
f
a
is either a pure value of type a
or some effect, determined by f
. Crucially, IOSpec
f
is a
monad, provided f
is a functor.
foldIOSpec :: Functor f => (a -> b) -> (f b -> b) -> IOSpec f a -> b Source #
The fold over IOSpec
values.
Coproducts of functors
data (f :+: g) x infixr 5 Source #
The coproduct of functors
Instances
(f :<: g, Functor f, Functor g, Functor h) => f :<: (h :+: g) Source # | |
Defined in Test.IOSpec.Types | |
(Functor f, Functor g) => f :<: (f :+: g) Source # | |
Defined in Test.IOSpec.Types | |
(Functor f, Functor g) => Functor (f :+: g) Source # | |
(Executable f, Executable g) => Executable (f :+: g) Source # | |
Injections from one functor to another
class (Functor sub, Functor sup) => sub :<: sup Source #
The (:<:) class
inj