freer-indexed
Freer indexed (parameterized) monad for type-level resource-aware effectual operations.
See Parameterized Extensible Effects and Session Types.
See docs on hackage.
This package defines "freer indexed monad". It combines the ideas of freer monad and indexed (aka parameterized) monad: Freer Monads, More Extensible Effects Parameterized monads Parameterized Extensible Effects and Session Types It allows defining indexed monadic computations as GADTs without making them into ad-hoc indexed monads, and instead use this data type to convert them into Functor, XApplicative and XMonad instances - see Control.XApplicative and Control.XMonad in this package. This package does not (yet) allow composing these computations. Semantically, these computations could represent type-level state changes of some associated resources, with the first index parameter meaning initial resource state prior to the computation, and the second index - the final resource state, making each computation an edge in the graph of resource state transitions. For XApplicative/XMonad classes all class and additional functions have similar names to standard Applicative/Monad functions, following two naming conventions: function names are prefixed with "x" (for "indeXed") - e.g. xpure, xreturn, xliftM2 etc. operators are postfixed with ":" - e.g. <*>:, >>=:, >=>: etc.
Homepage Repository Hackage Haskell Download
cabal install freer-indexed-0.1.0.0
Freer indexed (parameterized) monad for type-level resource-aware effectual operations.
See Parameterized Extensible Effects and Session Types.
See docs on hackage.