License | BSD-style (see the file LICENSE) |
---|---|
Maintainer | sjoerd@w3future.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
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 {}
- deriveHHFreeInstance :: Name -> Q [Dec]
- 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
ProfunctorMonad (HHFree c) Source # | |
BifunctorMonad (HHFree c :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # | |
ProfunctorFunctor (HHFree c :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # | |
BifunctorFunctor (HHFree c :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # | |
(c ~=> (Category :: (Type -> Type -> Type) -> Constraint), c (HHFree c a)) => Category (HHFree c a :: Type -> Type -> Type) Source # | |
(c ~=> Bifunctor, c (HHFree c a)) => Bifunctor (HHFree c a) Source # | |
(c ~=> Arrow, c (HHFree c a)) => Arrow (HHFree c a) Source # | |
Defined in Data.Functor.HHFree | |
(c ~=> ArrowZero, c (HHFree c a)) => ArrowZero (HHFree c a) Source # | |
Defined in Data.Functor.HHFree | |
(c ~=> ArrowPlus, c (HHFree c a)) => ArrowPlus (HHFree c a) Source # | |
(c ~=> ArrowChoice, c (HHFree c a)) => ArrowChoice (HHFree c a) Source # | |
Defined in Data.Functor.HHFree | |
(c ~=> ArrowApply, c (HHFree c f)) => ArrowApply (HHFree c f) Source # | |
Defined in Data.Functor.HHFree | |
(c ~=> ArrowLoop, c (HHFree c a)) => ArrowLoop (HHFree c a) Source # | |
Defined in Data.Functor.HHFree | |
(c ~=> Choice, c (HHFree c a)) => Choice (HHFree c a) Source # | |
(c ~=> Closed, c (HHFree c a)) => Closed (HHFree c a) Source # | |
Defined in Data.Functor.HHFree | |
(c ~=> Strong, c (HHFree c a)) => Strong (HHFree c a) Source # | |
(c ~=> Profunctor, c (HHFree c a)) => Profunctor (HHFree c a) Source # | |
Defined in Data.Functor.HHFree dimap :: (a0 -> b) -> (c0 -> d) -> HHFree c a b c0 -> HHFree c a a0 d lmap :: (a0 -> b) -> HHFree c a b c0 -> HHFree c a a0 c0 rmap :: (b -> c0) -> HHFree c a a0 b -> HHFree c a a0 c0 (#.) :: forall a0 b c0 q. Coercible c0 b => q b c0 -> HHFree c a a0 b -> HHFree c a a0 c0 (.#) :: forall a0 b c0 q. Coercible b a0 => HHFree c a b c0 -> q a0 b -> HHFree c a a0 c0 | |
(c ~=> Biapplicative, c (HHFree c a)) => Biapplicative (HHFree c a) Source # | |
Defined in Data.Functor.HHFree bipure :: a0 -> b -> HHFree c a a0 b (<<*>>) :: HHFree c a (a0 -> b) (c0 -> d) -> HHFree c a a0 c0 -> HHFree c a b d biliftA2 :: (a0 -> b -> c0) -> (d -> e -> f) -> HHFree c a a0 d -> HHFree c a b e -> HHFree c a c0 f (*>>) :: HHFree c a a0 b -> HHFree c a c0 d -> HHFree c a c0 d (<<*) :: HHFree c a a0 b -> HHFree c a c0 d -> HHFree c a a0 b |