| Copyright | (c) Justin Le 2019 |
|---|---|
| License | BSD3 |
| Maintainer | justin@jle.im |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.Functor.Contravariant.Divisible.Free
Description
Provides free structures for the various typeclasses of the Divisible
hierarchy.
Since: 0.3.0.0
Synopsis
- newtype Div f a where
- hoistDiv :: forall f g. (f ~> g) -> Div f ~> Div g
- liftDiv :: f ~> Div f
- runDiv :: forall f g. Divisible g => (f ~> g) -> Div f ~> g
- divListF :: forall f. Contravariant f => Div f ~> ListF f
- listFDiv :: ListF f ~> Div f
- newtype Div1 f a where
- hoistDiv1 :: (f ~> g) -> Div1 f ~> Div1 g
- liftDiv1 :: f ~> Div1 f
- toDiv :: Div1 f ~> Div f
- runDiv1 :: Divise g => (f ~> g) -> Div1 f ~> g
- div1NonEmptyF :: Contravariant f => Div1 f ~> NonEmptyF f
- nonEmptyFDiv1 :: NonEmptyF f ~> Div1 f
- data Dec :: (Type -> Type) -> Type -> Type where
- hoistDec :: forall f g. (f ~> g) -> Dec f ~> Dec g
- liftDec :: f ~> Dec f
- runDec :: forall f g. Conclude g => (f ~> g) -> Dec f ~> g
- data Dec1 :: (Type -> Type) -> Type -> Type where
- hoistDec1 :: forall f g. (f ~> g) -> Dec1 f ~> Dec1 g
- liftDec1 :: f ~> Dec1 f
- toDec :: Dec1 f a -> Dec f a
- runDec1 :: Decide g => (f ~> g) -> Dec1 f ~> g
Documentation
The free Divisible. Used to sequence multiple contravariant
consumers, splitting out the input across all consumers.
This type is essentially ListF; the only reason why it has to exist
separately outside of ListF is because the current typeclass hierarchy
isn't compatible with both the covariant Interpret instance (requiring
Plus) and the contravariant Interpret instance (requiring
Divisible).
The wrapping in Coyoneda is also to provide a usable
Associative instance for the contravariant
Day.
Bundled Patterns
| pattern Conquer :: Div f a | Pattern matching on an empty Before v0.3.3.0, this used to be the concrete constructor of |
| pattern Divide :: (a -> (b, c)) -> f b -> Div f c -> Div f a | Pattern matching on a non-empty Before v0.3.3.0, this used to be the concrete constructor of |
Instances
| FreeOf Divisible Div Source # | Since: 0.3.0.0 |
| HTraversable Div Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| Divisible f => Interpret Div (f :: Type -> Type) Source # | |
| Contravariant (Div f) Source # | |
| Divisible (Div f) Source # | |
| Divise (Div f) Source # | |
| Inplicative (Div f) Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| Inply (Div f) Source # | |
| Invariant (Div f) Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| Inject Div Source # | |
| HFunctor Div Source # | |
| type FreeFunctorBy Div Source # | |
Defined in Data.HFunctor.Final | |
The free Divise: a non-empty version of Div.
This type is essentially NonEmptyF; the only reason why it has to exist
separately outside of NonEmptyF is because the current typeclass
hierarchy isn't compatible with both the covariant Interpret instance
(requiring Plus) and the contravariant Interpret instance (requiring
Divisible).
The wrapping in Coyoneda is also to provide a usable
Associative instance for the contravariant
Day.
Bundled Patterns
| pattern Div1_ :: (a -> (b, c)) -> f b -> Div f c -> Div1 f a | Pattern matching on a Before v0.3.3.0, this used to be the concrete constructor of Since: 0.3.3.0 |
Instances
| FreeOf Divise Div1 Source # | Since: 0.3.0.0 |
| HTraversable Div1 Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| HTraversable1 Div1 Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| Divise f => Interpret Div1 (f :: Type -> Type) Source # | |
| Contravariant (Div1 f) Source # | |
| Divise (Div1 f) Source # | |
| Inply (Div1 f) Source # | |
| Invariant (Div1 f) Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| Inject Div1 Source # | |
| HFunctor Div1 Source # | |
| type FreeFunctorBy Div1 Source # | |
Defined in Data.HFunctor.Final | |
div1NonEmptyF :: Contravariant f => Div1 f ~> NonEmptyF f Source #
data Dec :: (Type -> Type) -> Type -> Type where Source #
The free Decide. Used to aggregate multiple possible consumers,
directing the input into an appropriate consumer.
Instances
| Inject Dec Source # | |
| FreeOf Conclude Dec Source # | Since: 0.3.0.0 |
| HTraversable Dec Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| HFunctor Dec Source # | |
| Conclude f => Interpret Dec (f :: Type -> Type) Source # | |
| Contravariant (Dec f) Source # | |
| Conclude (Dec f) Source # | |
| Decide (Dec f) Source # | |
| Inalt (Dec f) Source # | |
| Inplus (Dec f) Source # | |
| Invariant (Dec f) Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| type FreeFunctorBy Dec Source # | |
Defined in Data.HFunctor.Final | |
hoistDec :: forall f g. (f ~> g) -> Dec f ~> Dec g Source #
Map over the underlying context in a Dec.
data Dec1 :: (Type -> Type) -> Type -> Type where Source #
Instances
| Inject Dec1 Source # | |
| FreeOf Decide Dec1 Source # | Since: 0.3.0.0 |
| HTraversable Dec1 Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| HTraversable1 Dec1 Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| HFunctor Dec1 Source # | |
| Decide f => Interpret Dec1 (f :: Type -> Type) Source # | |
| Contravariant (Dec1 f) Source # | |
| Decide (Dec1 f) Source # | |
| Inalt (Dec1 f) Source # | |
| Invariant (Dec1 f) Source # | |
Defined in Data.Functor.Contravariant.Divisible.Free | |
| type FreeFunctorBy Dec1 Source # | |
Defined in Data.HFunctor.Final | |
hoistDec1 :: forall f g. (f ~> g) -> Dec1 f ~> Dec1 g Source #
Map over the undering context in a Dec1.