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 | GHC2021 |
Exports the promoted and singled versions of the Sum
data type.
The Product
singleton
type family Sing :: k -> Type Source #
The singleton kind-indexed type family.
Instances
Defunctionalization symbols
Orphan instances
SingI1 ('InL :: f a -> Sum f g a) Source # | |
SingI1 ('InR :: g a -> Sum f g a) Source # | |
PFunctor (Sum f g) Source # | |
(SFunctor f, SFunctor g) => SFunctor (Sum f g) Source # | |
PFoldable (Sum f g) Source # | |
type FoldMap arg arg1 :: m Source # type Foldr arg arg1 arg2 :: b Source # type Foldr' arg arg1 arg2 :: b Source # type Foldl arg arg1 arg2 :: b Source # type Foldl' arg arg1 arg2 :: b Source # type Foldr1 arg arg1 :: a Source # type Foldl1 arg arg1 :: a Source # type ToList arg :: [a] Source # type Null arg :: Bool Source # type Length arg :: Natural Source # type Elem arg arg1 :: Bool Source # type Maximum arg :: a Source # | |
(SFoldable f, SFoldable g) => SFoldable (Sum f g) Source # | |
sFold :: forall m (t1 :: Sum f g m). SMonoid m => Sing t1 -> Sing (Apply FoldSym0 t1) Source # sFoldMap :: forall a m (t1 :: a ~> m) (t2 :: Sum f g a). SMonoid m => Sing t1 -> Sing t2 -> Sing (Apply (Apply FoldMapSym0 t1) t2) Source # sFoldr :: forall a b (t1 :: a ~> (b ~> b)) (t2 :: b) (t3 :: Sum f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply FoldrSym0 t1) t2) t3) Source # sFoldr' :: forall a b (t1 :: a ~> (b ~> b)) (t2 :: b) (t3 :: Sum f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply Foldr'Sym0 t1) t2) t3) Source # sFoldl :: forall b a (t1 :: b ~> (a ~> b)) (t2 :: b) (t3 :: Sum f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply FoldlSym0 t1) t2) t3) Source # sFoldl' :: forall b a (t1 :: b ~> (a ~> b)) (t2 :: b) (t3 :: Sum f g a). Sing t1 -> Sing t2 -> Sing t3 -> Sing (Apply (Apply (Apply Foldl'Sym0 t1) t2) t3) Source # sFoldr1 :: forall a (t1 :: a ~> (a ~> a)) (t2 :: Sum f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply Foldr1Sym0 t1) t2) Source # sFoldl1 :: forall a (t1 :: a ~> (a ~> a)) (t2 :: Sum f g a). Sing t1 -> Sing t2 -> Sing (Apply (Apply Foldl1Sym0 t1) t2) Source # sToList :: forall a (t1 :: Sum f g a). Sing t1 -> Sing (Apply ToListSym0 t1) Source # sNull :: forall a (t1 :: Sum f g a). Sing t1 -> Sing (Apply NullSym0 t1) Source # sLength :: forall a (t1 :: Sum f g a). Sing t1 -> Sing (Apply LengthSym0 t1) Source # sElem :: forall a (t1 :: a) (t2 :: Sum f g a). SEq a => Sing t1 -> Sing t2 -> Sing (Apply (Apply ElemSym0 t1) t2) Source # sMaximum :: forall a (t1 :: Sum f g a). SOrd a => Sing t1 -> Sing (Apply MaximumSym0 t1) Source # sMinimum :: forall a (t1 :: Sum f g a). SOrd a => Sing t1 -> Sing (Apply MinimumSym0 t1) Source # sSum :: forall a (t1 :: Sum f g a). SNum a => Sing t1 -> Sing (Apply SumSym0 t1) Source # sProduct :: forall a (t1 :: Sum f g a). SNum a => Sing t1 -> Sing (Apply ProductSym0 t1) Source # | |
PTraversable (Sum f g) Source # | |
(STraversable f, STraversable g) => STraversable (Sum f g) Source # | |
sTraverse :: forall a (f0 :: Type -> Type) b (t1 :: a ~> f0 b) (t2 :: Sum f g a). SApplicative f0 => Sing t1 -> Sing t2 -> Sing (Apply (Apply TraverseSym0 t1) t2) Source # sSequenceA :: forall (f0 :: Type -> Type) a (t1 :: Sum f g (f0 a)). SApplicative f0 => Sing t1 -> Sing (Apply SequenceASym0 t1) Source # sMapM :: forall a (m :: Type -> Type) b (t1 :: a ~> m b) (t2 :: Sum f g a). SMonad m => Sing t1 -> Sing t2 -> Sing (Apply (Apply MapMSym0 t1) t2) Source # sSequence :: forall (m :: Type -> Type) a (t1 :: Sum f g (m a)). SMonad m => Sing t1 -> Sing (Apply SequenceSym0 t1) Source # | |
SingI x => SingI ('InL x :: Sum f g a) Source # | |
SingI y => SingI ('InR y :: Sum f g a) Source # | |