name: freer-indexed
description: This package defines &quot;freer indexed monad&quot;. 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 &quot;x&quot; (for &quot;indeXed&quot;) - e.g. xpure, xreturn, xliftM2 etc.

operators are postfixed with &quot;:&quot; - e.g. &lt;*&gt;:, &gt;&gt;=:, &gt;=&gt;: etc.
license_spdx: BSD-3-Clause
version: 0.1.0.0
spec_version: 1.0
download_url: http://hackage.haskell.org/package/freer-indexed-0.1.0.0/freer-indexed-0.1.0.0.tar.gz
home_url: 
            
              https://github.com/epoberezkin/freer-indexed#readme
            
          
news_url: https://libraries.io/hackage/freer-indexed/tags.atom
date: 2020-07-08
about_resource: NONE
libraries_io_url: https://libraries.io/hackage/freer-indexed
vcs_tool: git
vcs_repository: https://github.com/epoberezkin/freer-indexed
vcs_branch: master
