Copyright | (C) 2021 Ryan Scott |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | Richard Eisenberg (rae@cs.brynmawr.edu) |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | GHC2021 |
Exports the promoted and singled versions of the Compose
data type.
Synopsis
- type family Sing :: k -> Type
- data SCompose (a1 :: Compose f g a) where
- type family GetCompose (a1 :: Compose f g a) :: f (g a) where ...
- sGetCompose :: forall {k1} {k2} (f :: k1 -> Type) (g :: k2 -> k1) (a :: k2) (t :: Compose f g a). Sing t -> Sing (Apply (GetComposeSym0 :: TyFun (Compose f g a) (f (g a)) -> Type) t)
- data ComposeSym0 (z :: TyFun (f (g a)) (Compose f g a))
- type family ComposeSym1 (x :: f (g a)) :: Compose f g a where ...
- data GetComposeSym0 (a1 :: TyFun (Compose f g a) (f (g a)))
- type family GetComposeSym1 (a6989586621681210943 :: Compose f g a) :: f (g a) where ...
The Compose
singleton
type family Sing :: k -> Type #
Instances
data SCompose (a1 :: Compose f g a) where infixr 9 Source #
SCompose :: forall {k} {k1} (f :: k -> Type) (g :: k1 -> k) (a :: k1) (x :: f (g a)). Sing x -> SCompose ('Compose x) infixr 9 |
Instances
SDecide (f (g a)) => TestCoercion (SCompose :: Compose f g a -> Type) Source # | |
Defined in Data.Functor.Compose.Singletons | |
SDecide (f (g a)) => TestEquality (SCompose :: Compose f g a -> Type) Source # | |
Defined in Data.Functor.Compose.Singletons | |
Eq (SCompose z) Source # | |
Ord (SCompose z) Source # | |
Defined in Data.Functor.Compose.Singletons |
type family GetCompose (a1 :: Compose f g a) :: f (g a) where ... Source #
GetCompose ('Compose x :: Compose f g a) = x |
sGetCompose :: forall {k1} {k2} (f :: k1 -> Type) (g :: k2 -> k1) (a :: k2) (t :: Compose f g a). Sing t -> Sing (Apply (GetComposeSym0 :: TyFun (Compose f g a) (f (g a)) -> Type) t) Source #
Defunctionalization symbols
data ComposeSym0 (z :: TyFun (f (g a)) (Compose f g a)) infixr 9 Source #
Instances
SingI (ComposeSym0 :: TyFun (f (g a)) (Compose f g a) -> Type) Source # | |
Defined in Data.Functor.Compose.Singletons | |
type Apply (ComposeSym0 :: TyFun (f (g a)) (Compose f g a) -> Type) (x :: f (g a)) Source # | |
Defined in Data.Functor.Compose.Singletons |
type family ComposeSym1 (x :: f (g a)) :: Compose f g a where ... infixr 9 Source #
ComposeSym1 (x :: f (g a)) = 'Compose x |
data GetComposeSym0 (a1 :: TyFun (Compose f g a) (f (g a))) Source #
Instances
SingI (GetComposeSym0 :: TyFun (Compose f g a) (f (g a)) -> Type) Source # | |
Defined in Data.Functor.Compose.Singletons | |
SuppressUnusedWarnings (GetComposeSym0 :: TyFun (Compose f g a) (f (g a)) -> Type) Source # | |
Defined in Data.Functor.Compose.Singletons suppressUnusedWarnings :: () # | |
type Apply (GetComposeSym0 :: TyFun (Compose f g a) (f (g a)) -> Type) (a6989586621681210943 :: Compose f g a) Source # | |
Defined in Data.Functor.Compose.Singletons type Apply (GetComposeSym0 :: TyFun (Compose f g a) (f (g a)) -> Type) (a6989586621681210943 :: Compose f g a) = GetCompose a6989586621681210943 |
type family GetComposeSym1 (a6989586621681210943 :: Compose f g a) :: f (g a) where ... Source #
GetComposeSym1 (a6989586621681210943 :: Compose f g a) = GetCompose a6989586621681210943 |
Orphan instances
PAlternative (Compose f g :: k2 -> Type) Source # | |
SingI1 ('Compose :: f (g a) -> Compose f g a) Source # | |
PApplicative (Compose f g) Source # | |
PFunctor (Compose f g) Source # | |
(SAlternative f, SApplicative g) => SAlternative (Compose f g) Source # | |
(SApplicative f, SApplicative g) => SApplicative (Compose f g) Source # | |
sPure :: forall a (t :: a). Sing t -> Sing (Apply (PureSym0 :: TyFun a (Compose f g a) -> Type) t) Source # (%<*>) :: forall a b (t1 :: Compose f g (a ~> b)) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<*>@#@$) :: TyFun (Compose f g (a ~> b)) (Compose f g a ~> Compose f g b) -> Type) t1) t2) Source # sLiftA2 :: forall a b c (t1 :: a ~> (b ~> c)) (t2 :: Compose f g a) (t3 :: Compose f g b). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply (LiftA2Sym0 :: TyFun (a ~> (b ~> c)) (Compose f g a ~> (Compose f g b ~> Compose f g c)) -> Type) t1) t2) t3) Source # (%*>) :: forall a b (t1 :: Compose f g a) (t2 :: Compose f g b). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((*>@#@$) :: TyFun (Compose f g a) (Compose f g b ~> Compose f g b) -> Type) t1) t2) Source # (%<*) :: forall a b (t1 :: Compose f g a) (t2 :: Compose f g b). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<*@#@$) :: TyFun (Compose f g a) (Compose f g b ~> Compose f g a) -> Type) t1) t2) Source # | |
(SFunctor f, SFunctor g) => SFunctor (Compose f g) Source # | |
sFmap :: forall a b (t1 :: a ~> b) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply (FmapSym0 :: TyFun (a ~> b) (Compose f g a ~> Compose f g b) -> Type) t1) t2) Source # (%<$) :: forall a b (t1 :: a) (t2 :: Compose f g b). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<$@#@$) :: TyFun a (Compose f g b ~> Compose f g a) -> Type) t1) t2) Source # | |
PFoldable (Compose f g) Source # | |
(SFoldable f, SFoldable g) => SFoldable (Compose f g) Source # | |
sFold :: forall m (t1 :: Compose f g m). SMonoid m => Sing t1 -> Sing (Apply (FoldSym0 :: TyFun (Compose f g m) m -> Type) t1) Source # sFoldMap :: forall a m (t1 :: a ~> m) (t2 :: Compose f g a). SMonoid m => Sing t1 -> Sing t2 -> Sing (Apply (Apply (FoldMapSym0 :: TyFun (a ~> m) (Compose f g a ~> m) -> Type) t1) t2) Source # sFoldr :: forall a b (t1 :: a ~> (b ~> b)) (t2 :: b) (t3 :: Compose f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply (FoldrSym0 :: TyFun (a ~> (b ~> b)) (b ~> (Compose f g a ~> b)) -> Type) t1) t2) t3) Source # sFoldr' :: forall a b (t1 :: a ~> (b ~> b)) (t2 :: b) (t3 :: Compose f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply (Foldr'Sym0 :: TyFun (a ~> (b ~> b)) (b ~> (Compose f g a ~> b)) -> Type) t1) t2) t3) Source # sFoldl :: forall b a (t1 :: b ~> (a ~> b)) (t2 :: b) (t3 :: Compose f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply (FoldlSym0 :: TyFun (b ~> (a ~> b)) (b ~> (Compose f g a ~> b)) -> Type) t1) t2) t3) Source # sFoldl' :: forall b a (t1 :: b ~> (a ~> b)) (t2 :: b) (t3 :: Compose f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply (Foldl'Sym0 :: TyFun (b ~> (a ~> b)) (b ~> (Compose f g a ~> b)) -> Type) t1) t2) t3) Source # sFoldr1 :: forall a (t1 :: a ~> (a ~> a)) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply (Foldr1Sym0 :: TyFun (a ~> (a ~> a)) (Compose f g a ~> a) -> Type) t1) t2) Source # sFoldl1 :: forall a (t1 :: a ~> (a ~> a)) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply (Foldl1Sym0 :: TyFun (a ~> (a ~> a)) (Compose f g a ~> a) -> Type) t1) t2) Source # sToList :: forall a (t1 :: Compose f g a). Sing t1 -> Sing (Apply (ToListSym0 :: TyFun (Compose f g a) [a] -> Type) t1) Source # sNull :: forall a (t1 :: Compose f g a). Sing t1 -> Sing (Apply (NullSym0 :: TyFun (Compose f g a) Bool -> Type) t1) Source # sLength :: forall a (t1 :: Compose f g a). Sing t1 -> Sing (Apply (LengthSym0 :: TyFun (Compose f g a) Natural -> Type) t1) Source # sElem :: forall a (t1 :: a) (t2 :: Compose f g a). SEq a => Sing t1 -> Sing t2 -> Sing (Apply (Apply (ElemSym0 :: TyFun a (Compose f g a ~> Bool) -> Type) t1) t2) Source # sMaximum :: forall a (t1 :: Compose f g a). SOrd a => Sing t1 -> Sing (Apply (MaximumSym0 :: TyFun (Compose f g a) a -> Type) t1) Source # sMinimum :: forall a (t1 :: Compose f g a). SOrd a => Sing t1 -> Sing (Apply (MinimumSym0 :: TyFun (Compose f g a) a -> Type) t1) Source # sSum :: forall a (t1 :: Compose f g a). SNum a => Sing t1 -> Sing (Apply (SumSym0 :: TyFun (Compose f g a) a -> Type) t1) Source # sProduct :: forall a (t1 :: Compose f g a). SNum a => Sing t1 -> Sing (Apply (ProductSym0 :: TyFun (Compose f g a) a -> Type) t1) Source # | |
PTraversable (Compose f g) Source # | |
(STraversable f, STraversable g) => STraversable (Compose f g) Source # | |
sTraverse :: forall a (f0 :: Type -> Type) b (t1 :: a ~> f0 b) (t2 :: Compose f g a). SApplicative f0 => Sing t1 -> Sing t2 -> Sing (Apply (Apply (TraverseSym0 :: TyFun (a ~> f b) (Compose f g a ~> f (Compose f g b)) -> Type) t1) t2) Source # sSequenceA :: forall (f0 :: Type -> Type) a (t1 :: Compose f g (f0 a)). SApplicative f0 => Sing t1 -> Sing (Apply (SequenceASym0 :: TyFun (Compose f g (f a)) (f (Compose f g a)) -> Type) t1) Source # sMapM :: forall a (m :: Type -> Type) b (t1 :: a ~> m b) (t2 :: Compose f g a). SMonad m => Sing t1 -> Sing t2 -> Sing (Apply (Apply (MapMSym0 :: TyFun (a ~> m b) (Compose f g a ~> m (Compose f g b)) -> Type) t1) t2) Source # sSequence :: forall (m :: Type -> Type) a (t1 :: Compose f g (m a)). SMonad m => Sing t1 -> Sing (Apply (SequenceSym0 :: TyFun (Compose f g (m a)) (m (Compose f g a)) -> Type) t1) Source # | |
SDecide (f (g a)) => SDecide (Compose f g a) Source # | |
PEq (Compose f g a) Source # | |
SEq (f (g a)) => SEq (Compose f g a) Source # | |
(%==) :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((==@#@$) :: TyFun (Compose f g a) (Compose f g a ~> Bool) -> Type) t1) t2) Source # (%/=) :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((/=@#@$) :: TyFun (Compose f g a) (Compose f g a ~> Bool) -> Type) t1) t2) Source # | |
POrd (Compose f g a) Source # | |
SOrd (f (g a)) => SOrd (Compose f g a) Source # | |
sCompare :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply (CompareSym0 :: TyFun (Compose f g a) (Compose f g a ~> Ordering) -> Type) t1) t2) Source # (%<) :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<@#@$) :: TyFun (Compose f g a) (Compose f g a ~> Bool) -> Type) t1) t2) Source # (%<=) :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((<=@#@$) :: TyFun (Compose f g a) (Compose f g a ~> Bool) -> Type) t1) t2) Source # (%>) :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((>@#@$) :: TyFun (Compose f g a) (Compose f g a ~> Bool) -> Type) t1) t2) Source # (%>=) :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply ((>=@#@$) :: TyFun (Compose f g a) (Compose f g a ~> Bool) -> Type) t1) t2) Source # sMax :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply (MaxSym0 :: TyFun (Compose f g a) (Compose f g a ~> Compose f g a) -> Type) t1) t2) Source # sMin :: forall (t1 :: Compose f g a) (t2 :: Compose f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply (MinSym0 :: TyFun (Compose f g a) (Compose f g a ~> Compose f g a) -> Type) t1) t2) Source # | |
SingI x => SingI ('Compose x :: Compose f g a) Source # | |