License | BSD-style (see the file LICENSE) |
---|---|
Maintainer | sjoerd@w3future.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe |
Language | Haskell2010 |
A free functor is left adjoint to a forgetful functor. In this package the forgetful functor forgets class constraints.
Compared to Data.Functor.HFree
we have 2 two parameters.
Synopsis
- type (:~~>) f g = forall a b. f a b -> g a b
- newtype HHFree c f a b = HHFree {}
- unit :: f :~~> HHFree c f
- rightAdjunct :: c g => (f :~~> g) -> HHFree c f :~~> g
- counit :: c f => HHFree c f :~~> f
- leftAdjunct :: (HHFree c f :~~> g) -> f :~~> g
- transform :: (forall r. c r => (g :~~> r) -> f :~~> r) -> HHFree c f :~~> HHFree c g
- hfmap :: (f :~~> g) -> HHFree c f :~~> HHFree c g
- bind :: (f :~~> HHFree c g) -> HHFree c f :~~> HHFree c g
Documentation
newtype HHFree c f a b Source #
The higher order free functor over two type parameters for constraint c
.
Instances
ProfunctorFunctor (HHFree c) Source # | |
Defined in Data.Functor.HHFree | |
ProfunctorMonad (HHFree c) Source # | |
Defined in Data.Functor.HHFree | |
BifunctorMonad (HHFree c :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # | |
BifunctorFunctor (HHFree c :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # | |
(forall (x :: Type -> Type -> Type). c x => Category x) => Category (HHFree c f :: Type -> Type -> Type) Source # | |
(forall (x :: Type -> Type -> Type). c x => Bifunctor x) => Bifunctor (HHFree c f) Source # | |
(forall (x :: Type -> Type -> Type). c x => Arrow x) => Arrow (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(forall (x :: Type -> Type -> Type). c x => ArrowZero x) => ArrowZero (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(forall (x :: Type -> Type -> Type). c x => ArrowPlus x) => ArrowPlus (HHFree c f) Source # | |
(forall (x :: Type -> Type -> Type). c x => ArrowChoice x) => ArrowChoice (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(forall (x :: Type -> Type -> Type). c x => ArrowApply x) => ArrowApply (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(forall (x :: Type -> Type -> Type). c x => ArrowLoop x) => ArrowLoop (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(forall (x :: Type -> Type -> Type). c x => Biapplicative x) => Biapplicative (HHFree c f) Source # | |
Defined in Data.Functor.HHFree bipure :: a -> b -> HHFree c f a b # (<<*>>) :: HHFree c f (a -> b) (c0 -> d) -> HHFree c f a c0 -> HHFree c f b d # biliftA2 :: (a -> b -> c0) -> (d -> e -> f0) -> HHFree c f a d -> HHFree c f b e -> HHFree c f c0 f0 # (*>>) :: HHFree c f a b -> HHFree c f c0 d -> HHFree c f c0 d # (<<*) :: HHFree c f a b -> HHFree c f c0 d -> HHFree c f a b # | |
(forall (x :: Type -> Type -> Type). c x => Choice x) => Choice (HHFree c f) Source # | |
(forall (x :: Type -> Type -> Type). c x => Closed x) => Closed (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(forall (x :: Type -> Type -> Type). c x => Strong x) => Strong (HHFree c f) Source # | |
(forall (x :: Type -> Type -> Type). c x => Profunctor x) => Profunctor (HHFree c f) Source # | |
Defined in Data.Functor.HHFree dimap :: (a -> b) -> (c0 -> d) -> HHFree c f b c0 -> HHFree c f a d # lmap :: (a -> b) -> HHFree c f b c0 -> HHFree c f a c0 # rmap :: (b -> c0) -> HHFree c f a b -> HHFree c f a c0 # (#.) :: Coercible c0 b => q b c0 -> HHFree c f a b -> HHFree c f a c0 # (.#) :: Coercible b a => HHFree c f b c0 -> q a b -> HHFree c f a c0 # |