-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Classes for the rig (sums and products) of types
--
-- Classes for the rig (sums and products) of types
@package type-rig
@version 0.1
module Data.TypeRig.Productable
-- | Composability via type product (,) and unit type ().
class Invariant f => Productable f
rUnit :: Productable f => f ()
rUnit :: (Productable f, Applicative f) => f ()
(<***>) :: Productable f => f a -> f b -> f (a, b)
(<***>) :: (Productable f, Applicative f) => f a -> f b -> f (a, b)
(***>) :: Productable f => f () -> f a -> f a
(<***) :: Productable f => f a -> f () -> f a
infixr 3 <***
infixr 3 ***>
infixr 3 <***>
instance Data.TypeRig.Productable.Productable Data.Semigroup.Internal.Endo
instance Data.TypeRig.Productable.Productable m => Data.TypeRig.Productable.Productable (Control.Arrow.Kleisli m a)
instance Data.TypeRig.Productable.Productable Text.ParserCombinators.ReadPrec.ReadPrec
module Data.TypeRig.Summable
-- | Composability via type sum Either and empty type Void.
class Invariant f => Summable f
rVoid :: Summable f => f Void
rVoid :: (Summable f, Alternative f) => f Void
(<+++>) :: Summable f => f a -> f b -> f (Either a b)
(<+++>) :: (Summable f, Alternative f) => f a -> f b -> f (Either a b)
infixr 2 <+++>
instance Data.TypeRig.Summable.Summable Data.Semigroup.Internal.Endo
instance Data.TypeRig.Summable.Summable m => Data.TypeRig.Summable.Summable (Control.Arrow.Kleisli m a)
instance Data.TypeRig.Summable.Summable Text.ParserCombinators.ReadPrec.ReadPrec
module Data.TypeRig.Riggable
-- | Composability via a rig of types.
class (Productable f, Summable f) => Riggable f
rOptional :: forall a. Riggable f => f a -> f (Maybe a)
rList1 :: Riggable f => f a -> f (NonEmpty a)
rList :: Riggable f => f a -> f [a]
instance Data.TypeRig.Riggable.Riggable Data.Semigroup.Internal.Endo
instance Data.TypeRig.Riggable.Riggable m => Data.TypeRig.Riggable.Riggable (Control.Arrow.Kleisli m a)
instance Data.TypeRig.Riggable.Riggable Text.ParserCombinators.ReadPrec.ReadPrec
module Data.TypeRig