Free rigid selective functors.
Moduleselective-0.7.0.1Haskell2010
Control.Selective.Rigid.Free
This is a library for selective applicative functors, or just selective functors for short, an abstraction between applicative functors and monads, introduced in this paper: https://dl.acm.org/doi/10.1145/3341694.
This module defines free rigid selective functors. Rigid selective functors
are those that satisfy the property <*> = apS.
Intuitively, a selective functor f is "rigid" if any expression f a is
equivalent to a list of effects chained with select operators (the normal
form given by the free construction). In contrast, "non-rigid" selective
functors can have non-linear, tree-like shapes, because * nodes can't be
straightened using the <*> = apS equation.
- 1 type
- 6 values
- Packageselective-0.7.0.1
- Exports7
- LanguageHaskell2010
- LicenceMIT
- SourceFree.hs
Free rigid selective functors
2 declarationsLift a functor into a free selective computation.
Static analysis
5 declarationsExtract the resulting value if there are no necessary effects.
Collect all possible effects in the order they appear in a free selective computation.
Extract the necessary effect from a free selective computation. Note: there can be at most one effect that is statically guaranteed to be necessary.
Given a natural transformation from f to g, this gives a canonical
natural transformation from Select f to g.
Concatenate all effects of a free selective computation.