| Portability | ghc |
|---|---|
| Stability | alpha |
| Maintainer | Neil Sculthorpe <neil@ittc.ku.edu> |
| Safe Haskell | None |
Control.Monad.ConstrainedNormal
Contents
Description
This module provides constrained normalised type classes. The ideas behind this module are documented in the following paper:
The Constrained-Monad Problem. Neil Sculthorpe and Jan Bracker and George Giorgidze and Andy Gill. International Conference on Functional Programming, pages 287-298. ACM, 2013. http://dx.doi.org/10.1145/2500365.2500602
- data NF where
- liftNF :: c a => t a -> NF c t a
- lowerNF :: (forall x. c x => (x -> a) -> t x -> t a) -> NF c t a -> t a
- foldNF :: (forall x. c x => (x -> a) -> t x -> r) -> NF c t a -> r
- class Functor f => PointedFunctor f where
- point :: a -> f a
- data NPF where
- liftNPF :: c a => t a -> NPF c t a
- lowerNPF :: (a -> t a) -> (forall x. c x => (x -> a) -> t x -> t a) -> NPF c t a -> t a
- foldNPF :: (a -> r) -> (forall x. c x => (x -> a) -> t x -> r) -> NPF c t a -> r
- data NAF where
- liftNAF :: c a => t a -> NAF c t a
- lowerNAF :: (forall x. x -> t x) -> (forall y z. c y => t (y -> z) -> t y -> t z) -> NAF c t a -> t a
- foldNAF :: forall a c r t. (forall x. x -> r x) -> (forall y z. c y => r (y -> z) -> t y -> r z) -> NAF c t a -> r a
- data NM where
- liftNM :: c a => t a -> NM c t a
- lowerNM :: forall a c t. (a -> t a) -> (forall x. c x => t x -> (x -> t a) -> t a) -> NM c t a -> t a
- foldNM :: forall a c r t. (a -> r) -> (forall x. c x => t x -> (x -> r) -> r) -> NM c t a -> r
- data NMP c t a
- data NMP' where
- liftNMP :: c a => t a -> NMP c t a
- lowerNMP :: forall a c t. t a -> (t a -> t a -> t a) -> (a -> t a) -> (forall x. c x => t x -> (x -> t a) -> t a) -> NMP c t a -> t a
- foldNMP :: forall a c r t. r -> (r -> r -> r) -> (a -> r) -> (forall x. c x => t x -> (x -> r) -> r) -> NMP c t a -> r
- class Unconstrained a
Constrained Normalised Functors
Constrained Normalised Pointed Functors
class Functor f => PointedFunctor f whereSource
Instances
| PointedFunctor (NAF c t) | |
| PointedFunctor (NMP c t) | |
| PointedFunctor (NM c t) | |
| PointedFunctor (NPF c t) |
Instances
| Functor (NPF c t) | |
| PointedFunctor (NPF c t) |
Constrained Normalised Applicative Functors
Instances
| Functor (NAF c t) | |
| Applicative (NAF c t) | |
| PointedFunctor (NAF c t) |
lowerNAF :: (forall x. x -> t x) -> (forall y z. c y => t (y -> z) -> t y -> t z) -> NAF c t a -> t aSource
foldNAF :: forall a c r t. (forall x. x -> r x) -> (forall y z. c y => r (y -> z) -> t y -> r z) -> NAF c t a -> r aSource
Constrained Normalised Monads
Instances
| Monad (NM c t) | |
| Functor (NM c t) | |
| Applicative (NM c t) | |
| PointedFunctor (NM c t) |
lowerNM :: forall a c t. (a -> t a) -> (forall x. c x => t x -> (x -> t a) -> t a) -> NM c t a -> t aSource
foldNM :: forall a c r t. (a -> r) -> (forall x. c x => t x -> (x -> r) -> r) -> NM c t a -> rSource
Constrained Normalised MonadPlus
Instances
| Monad (NMP c t) | |
| Functor (NMP c t) | |
| MonadPlus (NMP c t) | |
| Applicative (NMP c t) | |
| Alternative (NMP c t) | |
| PointedFunctor (NMP c t) |
lowerNMP :: forall a c t. t a -> (t a -> t a -> t a) -> (a -> t a) -> (forall x. c x => t x -> (x -> t a) -> t a) -> NMP c t a -> t aSource
foldNMP :: forall a c r t. r -> (r -> r -> r) -> (a -> r) -> (forall x. c x => t x -> (x -> r) -> r) -> NMP c t a -> rSource
Utilities
class Unconstrained a Source
An empty type class. This can be used when a parameter of kind * -> Constraint is needed, but no constraints need to be imposed.
Instances