Copyright | (C) 2021 Ryan Scott |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | Richard Eisenberg (rae@cs.brynmawr.edu) |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Exports the promoted and singled versions of the Product
data type.
The Product
singleton
type family Sing :: k -> Type #
Instances
Defunctionalization symbols
Instances
SingI1 (PairSym1 :: f a -> TyFun (g a) (Product f g a) -> Type) Source # | |
Defined in Data.Functor.Product.Singletons | |
SingI x => SingI (PairSym1 x :: TyFun (g a) (Product f g a) -> Type) Source # | |
Defined in Data.Functor.Product.Singletons | |
type Apply (PairSym1 x :: TyFun (g a) (Product f g a) -> Type) (y :: g a) Source # | |
Defined in Data.Functor.Product.Singletons |
Orphan instances
PAlternative (Product f g :: k -> Type) Source # | |
PMonadPlus (Product f g :: k -> Type) Source # | |
SingI2 ('Pair :: f a -> g a -> Product f g a) Source # | |
SingI x => SingI1 ('Pair x :: g a -> Product f g a) Source # | |
PApplicative (Product f g) Source # | |
PFunctor (Product f g) Source # | |
PMonad (Product f g) Source # | |
(SAlternative f, SAlternative g) => SAlternative (Product f g) Source # | |
(SApplicative f, SApplicative g) => SApplicative (Product f g) Source # | |
sPure :: forall a (t :: a). Sing t -> Sing (Apply PureSym0 t) Source # (%<*>) :: forall a b (t :: Product f g (a ~> b)) (t :: Product f g a). Sing t -> Sing t -> Sing (Apply (Apply (<*>@#@$) t) t) Source # sLiftA2 :: forall a b c (t :: a ~> (b ~> c)) (t :: Product f g a) (t :: Product f g b). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply LiftA2Sym0 t) t) t) Source # (%*>) :: forall a b (t :: Product f g a) (t :: Product f g b). Sing t -> Sing t -> Sing (Apply (Apply (*>@#@$) t) t) Source # (%<*) :: forall a b (t :: Product f g a) (t :: Product f g b). Sing t -> Sing t -> Sing (Apply (Apply (<*@#@$) t) t) Source # | |
(SFunctor f, SFunctor g) => SFunctor (Product f g) Source # | |
(SMonad f, SMonad g) => SMonad (Product f g) Source # | |
(%>>=) :: forall a b (t :: Product f g a) (t :: a ~> Product f g b). Sing t -> Sing t -> Sing (Apply (Apply (>>=@#@$) t) t) Source # (%>>) :: forall a b (t :: Product f g a) (t :: Product f g b). Sing t -> Sing t -> Sing (Apply (Apply (>>@#@$) t) t) Source # sReturn :: forall a (t :: a). Sing t -> Sing (Apply ReturnSym0 t) Source # | |
(SMonadPlus f, SMonadPlus g) => SMonadPlus (Product f g) Source # | |
PMonadZip (Product f g) Source # | |
(SMonadZip f, SMonadZip g) => SMonadZip (Product f g) Source # | |
sMzip :: forall a b (t :: Product f g a) (t :: Product f g b). Sing t -> Sing t -> Sing (Apply (Apply MzipSym0 t) t) Source # sMzipWith :: forall a b c (t :: a ~> (b ~> c)) (t :: Product f g a) (t :: Product f g b). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply MzipWithSym0 t) t) t) Source # sMunzip :: forall a b (t :: Product f g (a, b)). Sing t -> Sing (Apply MunzipSym0 t) Source # | |
PFoldable (Product f g) Source # | |
type FoldMap arg arg :: m Source # type Foldr arg arg arg :: b Source # type Foldr' arg arg arg :: b Source # type Foldl arg arg arg :: b Source # type Foldl' arg arg arg :: b Source # type Foldr1 arg arg :: a Source # type Foldl1 arg arg :: a Source # type ToList arg :: [a] Source # type Null arg :: Bool Source # type Length arg :: Natural Source # type Elem arg arg :: Bool Source # type Maximum arg :: a Source # | |
(SFoldable f, SFoldable g) => SFoldable (Product f g) Source # | |
sFold :: forall m (t :: Product f g m). SMonoid m => Sing t -> Sing (Apply FoldSym0 t) Source # sFoldMap :: forall a m (t :: a ~> m) (t :: Product f g a). SMonoid m => Sing t -> Sing t -> Sing (Apply (Apply FoldMapSym0 t) t) Source # sFoldr :: forall a b (t :: a ~> (b ~> b)) (t :: b) (t :: Product f g a). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply FoldrSym0 t) t) t) Source # sFoldr' :: forall a b (t :: a ~> (b ~> b)) (t :: b) (t :: Product f g a). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply Foldr'Sym0 t) t) t) Source # sFoldl :: forall b a (t :: b ~> (a ~> b)) (t :: b) (t :: Product f g a). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply FoldlSym0 t) t) t) Source # sFoldl' :: forall b a (t :: b ~> (a ~> b)) (t :: b) (t :: Product f g a). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply Foldl'Sym0 t) t) t) Source # sFoldr1 :: forall a (t :: a ~> (a ~> a)) (t :: Product f g a). Sing t -> Sing t -> Sing (Apply (Apply Foldr1Sym0 t) t) Source # sFoldl1 :: forall a (t :: a ~> (a ~> a)) (t :: Product f g a). Sing t -> Sing t -> Sing (Apply (Apply Foldl1Sym0 t) t) Source # sToList :: forall a (t :: Product f g a). Sing t -> Sing (Apply ToListSym0 t) Source # sNull :: forall a (t :: Product f g a). Sing t -> Sing (Apply NullSym0 t) Source # sLength :: forall a (t :: Product f g a). Sing t -> Sing (Apply LengthSym0 t) Source # sElem :: forall a (t :: a) (t :: Product f g a). SEq a => Sing t -> Sing t -> Sing (Apply (Apply ElemSym0 t) t) Source # sMaximum :: forall a (t :: Product f g a). SOrd a => Sing t -> Sing (Apply MaximumSym0 t) Source # sMinimum :: forall a (t :: Product f g a). SOrd a => Sing t -> Sing (Apply MinimumSym0 t) Source # sSum :: forall a (t :: Product f g a). SNum a => Sing t -> Sing (Apply SumSym0 t) Source # sProduct :: forall a (t :: Product f g a). SNum a => Sing t -> Sing (Apply ProductSym0 t) Source # | |
PTraversable (Product f g) Source # | |
(STraversable f, STraversable g) => STraversable (Product f g) Source # | |
sTraverse :: forall a (f0 :: Type -> Type) b (t :: a ~> f0 b) (t :: Product f g a). SApplicative f0 => Sing t -> Sing t -> Sing (Apply (Apply TraverseSym0 t) t) Source # sSequenceA :: forall (f0 :: Type -> Type) a (t :: Product f g (f0 a)). SApplicative f0 => Sing t -> Sing (Apply SequenceASym0 t) Source # sMapM :: forall a (m :: Type -> Type) b (t :: a ~> m b) (t :: Product f g a). SMonad m => Sing t -> Sing t -> Sing (Apply (Apply MapMSym0 t) t) Source # sSequence :: forall (m :: Type -> Type) a (t :: Product f g (m a)). SMonad m => Sing t -> Sing (Apply SequenceSym0 t) Source # | |
(SingI x, SingI y) => SingI ('Pair x y :: Product f g a) Source # | |