Portability | ghc |
---|---|
Stability | alpha |
Maintainer | Neil Sculthorpe <neil@ittc.ku.edu> |
Safe Haskell | None |
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
PointedFunctor (NAF c t) | |
PointedFunctor (NMP c t) | |
PointedFunctor (NM c t) | |
PointedFunctor (NPF c t) |
Functor (NPF c t) | |
PointedFunctor (NPF c t) |
Constrained Normalised Applicative Functors
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
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
Monad (NMP c t) | |
Functor (NMP c t) | |
MonadPlus (NMP c t) | |
Applicative (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.