Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.Subcategory.Functor
Contents
Synopsis
- class Constrained (f :: Type -> Type) where
- type family Dom (f :: Type -> Type) a
- class Constrained f => CFunctor (f :: Type -> Type) where
- (<$:>) :: (CFunctor f, Dom f a, Dom f b) => (a -> b) -> f a -> f b
- defaultCmapConst :: (CFunctor f, Dom f a, Dom f b) => a -> f b -> f a
- newtype WrapFunctor (f :: Type -> Type) a = WrapFunctor {
- runFunctor :: f a
- data WrapMono mono (b :: k) where
- coerceToMono :: WrapMono mono (Element mono) -> mono
- withMonoCoercible :: (Coercible (WrapMono mono (Element mono)) mono => r) -> r
Documentation
class Constrained (f :: Type -> Type) Source #
Instances
type family Dom (f :: Type -> Type) a Source #
Instances
type Dom ZipList a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Handler a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Complex a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Identity a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom First a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Last a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Down a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom First a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Last a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Max a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Min a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Dual a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Product a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Sum a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom NonEmpty a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom STM a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Par1 a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom ArgDescr a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom ArgOrder a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom OptDescr a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom ReadP a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom ReadPrec a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom IntMap a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Seq a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Set a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Tree a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom IO a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Array a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom PrimArray a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom SmallArray a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom HashSet a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Vector a Source # | |
Defined in Control.Subcategory.Functor type Dom Vector a = () | |
type Dom Vector a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Vector a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Vector a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom Maybe a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom [] a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (WrappedMonad m) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (ArrowMonad a1) a2 Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (ST s) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Either a1) a2 Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Proxy :: Type -> Type) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Arg a1) a2 Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (U1 :: Type -> Type) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (V1 :: Type -> Type) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (ST s) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Map k) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (WrappedMono mono) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (WrapFunctor f) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (HashMap k) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom ((,) a1) a2 Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (WrappedArrow a1 b) a2 Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Const m :: Type -> Type) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Ap f) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Alt f) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Rec1 f) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (URec (Ptr ()) :: Type -> Type) a Source # | |
type Dom (URec Char :: Type -> Type) a Source # | |
type Dom (URec Double :: Type -> Type) a Source # | |
type Dom (URec Float :: Type -> Type) a Source # | |
type Dom (URec Int :: Type -> Type) a Source # | |
type Dom (URec Word :: Type -> Type) a Source # | |
type Dom (CAlt f) a Source # | |
Defined in Control.Subcategory.Alternative | |
type Dom (CApp f) a Source # | |
Defined in Control.Subcategory.Applicative | |
type Dom (WrapMono mono :: Type -> Type) b Source # | |
type Dom (CZippy f) a Source # | |
Defined in Control.Subcategory.Zip | |
type Dom (Product f g) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (Sum f g) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (f :*: g) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (f :+: g) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (K1 i c :: Type -> Type) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom ((->) r) a Source # | |
Defined in Control.Subcategory.Functor type Dom ((->) r) a = () | |
type Dom (Compose f g) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (f :.: g) a Source # | |
Defined in Control.Subcategory.Functor | |
type Dom (M1 i c f) a Source # | |
Defined in Control.Subcategory.Functor |
class Constrained f => CFunctor (f :: Type -> Type) where Source #
Minimal complete definition
Nothing
Methods
cmap :: (Dom f a, Dom f b) => (a -> b) -> f a -> f b Source #
(<$:) :: (Dom f a, Dom f b) => a -> f b -> f a infixl 4 Source #
Instances
CFunctor ZipList Source # | |
CFunctor Handler Source # | |
CFunctor Complex Source # | |
CFunctor Identity Source # | |
CFunctor First Source # | |
CFunctor Last Source # | |
CFunctor Down Source # | |
CFunctor First Source # | |
CFunctor Last Source # | |
CFunctor Max Source # | |
CFunctor Min Source # | |
CFunctor Dual Source # | |
CFunctor Product Source # | |
CFunctor Sum Source # | |
CFunctor NonEmpty Source # | |
CFunctor STM Source # | |
CFunctor Par1 Source # | |
CFunctor ArgDescr Source # | |
CFunctor ArgOrder Source # | |
CFunctor OptDescr Source # | |
CFunctor ReadP Source # | |
CFunctor ReadPrec Source # | |
CFunctor IntMap Source # | |
CFunctor Seq Source # | |
CFunctor Set Source # | |
CFunctor Tree Source # | |
CFunctor IO Source # | |
CFunctor Array Source # | |
CFunctor PrimArray Source # | |
CFunctor SmallArray Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom SmallArray a, Dom SmallArray b) => (a -> b) -> SmallArray a -> SmallArray b Source # (<$:) :: (Dom SmallArray a, Dom SmallArray b) => a -> SmallArray b -> SmallArray a Source # | |
CFunctor HashSet Source # | |
CFunctor Vector Source # | |
CFunctor Vector Source # | |
CFunctor Vector Source # | |
CFunctor Vector Source # | |
CFunctor Maybe Source # | |
CFunctor [] Source # | |
Monad m => CFunctor (WrappedMonad m) Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom (WrappedMonad m) a, Dom (WrappedMonad m) b) => (a -> b) -> WrappedMonad m a -> WrappedMonad m b Source # (<$:) :: (Dom (WrappedMonad m) a, Dom (WrappedMonad m) b) => a -> WrappedMonad m b -> WrappedMonad m a Source # | |
Arrow a => CFunctor (ArrowMonad a) Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom (ArrowMonad a) a0, Dom (ArrowMonad a) b) => (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b Source # (<$:) :: (Dom (ArrowMonad a) a0, Dom (ArrowMonad a) b) => a0 -> ArrowMonad a b -> ArrowMonad a a0 Source # | |
CFunctor (ST s) Source # | |
CFunctor (Either a) Source # | |
CFunctor (Proxy :: Type -> Type) Source # | |
CFunctor (Arg a) Source # | |
CFunctor (U1 :: Type -> Type) Source # | |
CFunctor (V1 :: Type -> Type) Source # | |
CFunctor (ST s) Source # | |
Ord k => CFunctor (Map k) Source # | |
MonoFunctor mono => CFunctor (WrappedMono mono) Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom (WrappedMono mono) a, Dom (WrappedMono mono) b) => (a -> b) -> WrappedMono mono a -> WrappedMono mono b Source # (<$:) :: (Dom (WrappedMono mono) a, Dom (WrappedMono mono) b) => a -> WrappedMono mono b -> WrappedMono mono a Source # | |
Functor f => CFunctor (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => (a -> b) -> WrapFunctor f a -> WrapFunctor f b Source # (<$:) :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => a -> WrapFunctor f b -> WrapFunctor f a Source # | |
CFunctor (HashMap k) Source # | |
CFunctor ((,) a) Source # | |
Arrow a => CFunctor (WrappedArrow a b) Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom (WrappedArrow a b) a0, Dom (WrappedArrow a b) b0) => (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Source # (<$:) :: (Dom (WrappedArrow a b) a0, Dom (WrappedArrow a b) b0) => a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Source # | |
CFunctor (Const m :: Type -> Type) Source # | |
CFunctor f => CFunctor (Ap f) Source # | |
CFunctor f => CFunctor (Alt f) Source # | |
Functor f => CFunctor (Rec1 f) Source # | |
CFunctor (URec (Ptr ()) :: Type -> Type) Source # | |
Defined in Control.Subcategory.Functor | |
CFunctor (URec Char :: Type -> Type) Source # | |
CFunctor (URec Double :: Type -> Type) Source # | |
Defined in Control.Subcategory.Functor | |
CFunctor (URec Float :: Type -> Type) Source # | |
Defined in Control.Subcategory.Functor | |
CFunctor (URec Int :: Type -> Type) Source # | |
CFunctor (URec Word :: Type -> Type) Source # | |
CFunctor f => CFunctor (CAlt f) Source # | |
CFunctor f => CFunctor (CApp f) Source # | |
MonoFunctor a => CFunctor (WrapMono a :: Type -> Type) Source # | |
Defined in Control.Subcategory.Functor | |
CFunctor f => CFunctor (CZippy f) Source # | |
(CFunctor f, CFunctor g) => CFunctor (Product f g) Source # | |
(CFunctor f, CFunctor g) => CFunctor (Sum f g) Source # | |
(CFunctor f, CFunctor g) => CFunctor (f :*: g) Source # | |
(CFunctor f, CFunctor g) => CFunctor (f :+: g) Source # | |
CFunctor (K1 i c :: Type -> Type) Source # | |
CFunctor ((->) r) Source # | |
(CFunctor f, CFunctor g) => CFunctor (Compose f g) Source # | |
(CFunctor f, CFunctor g) => CFunctor (f :.: g) Source # | |
Functor f => CFunctor (M1 i c f) Source # | |
newtype WrapFunctor (f :: Type -> Type) a Source #
Constructors
WrapFunctor | |
Fields
|
Instances
MonadFail f => MonadFail (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods fail :: String -> WrapFunctor f a # | |
MonadFix f => MonadFix (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods mfix :: (a -> WrapFunctor f a) -> WrapFunctor f a # | |
MonadZip f => MonadZip (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods mzip :: WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f (a, b) # mzipWith :: (a -> b -> c) -> WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f c # munzip :: WrapFunctor f (a, b) -> (WrapFunctor f a, WrapFunctor f b) # | |
Foldable f => Foldable (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods fold :: Monoid m => WrapFunctor f m -> m # foldMap :: Monoid m => (a -> m) -> WrapFunctor f a -> m # foldMap' :: Monoid m => (a -> m) -> WrapFunctor f a -> m # foldr :: (a -> b -> b) -> b -> WrapFunctor f a -> b # foldr' :: (a -> b -> b) -> b -> WrapFunctor f a -> b # foldl :: (b -> a -> b) -> b -> WrapFunctor f a -> b # foldl' :: (b -> a -> b) -> b -> WrapFunctor f a -> b # foldr1 :: (a -> a -> a) -> WrapFunctor f a -> a # foldl1 :: (a -> a -> a) -> WrapFunctor f a -> a # toList :: WrapFunctor f a -> [a] # null :: WrapFunctor f a -> Bool # length :: WrapFunctor f a -> Int # elem :: Eq a => a -> WrapFunctor f a -> Bool # maximum :: Ord a => WrapFunctor f a -> a # minimum :: Ord a => WrapFunctor f a -> a # sum :: Num a => WrapFunctor f a -> a # product :: Num a => WrapFunctor f a -> a # | |
Traversable f => Traversable (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods traverse :: Applicative f0 => (a -> f0 b) -> WrapFunctor f a -> f0 (WrapFunctor f b) # sequenceA :: Applicative f0 => WrapFunctor f (f0 a) -> f0 (WrapFunctor f a) # mapM :: Monad m => (a -> m b) -> WrapFunctor f a -> m (WrapFunctor f b) # sequence :: Monad m => WrapFunctor f (m a) -> m (WrapFunctor f a) # | |
Alternative f => Alternative (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods empty :: WrapFunctor f a # (<|>) :: WrapFunctor f a -> WrapFunctor f a -> WrapFunctor f a # some :: WrapFunctor f a -> WrapFunctor f [a] # many :: WrapFunctor f a -> WrapFunctor f [a] # | |
Applicative f => Applicative (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods pure :: a -> WrapFunctor f a # (<*>) :: WrapFunctor f (a -> b) -> WrapFunctor f a -> WrapFunctor f b # liftA2 :: (a -> b -> c) -> WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f c # (*>) :: WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f b # (<*) :: WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f a # | |
Functor f => Functor (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods fmap :: (a -> b) -> WrapFunctor f a -> WrapFunctor f b # (<$) :: a -> WrapFunctor f b -> WrapFunctor f a # | |
Monad f => Monad (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods (>>=) :: WrapFunctor f a -> (a -> WrapFunctor f b) -> WrapFunctor f b # (>>) :: WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f b # return :: a -> WrapFunctor f a # | |
MonadPlus f => MonadPlus (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal | |
Pointed f => Pointed (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods point :: a -> WrapFunctor f a # | |
Align f => Align (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods nil :: WrapFunctor f a # | |
Semialign f => Semialign (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods align :: WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f (These a b) # alignWith :: (These a b -> c) -> WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f c # | |
Unalign f => Unalign (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods unalign :: WrapFunctor f (These a b) -> (WrapFunctor f a, WrapFunctor f b) # unalignWith :: (c -> These a b) -> WrapFunctor f c -> (WrapFunctor f a, WrapFunctor f b) # | |
Unzip f => Unzip (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods unzipWith :: (c -> (a, b)) -> WrapFunctor f c -> (WrapFunctor f a, WrapFunctor f b) # unzip :: WrapFunctor f (a, b) -> (WrapFunctor f a, WrapFunctor f b) # | |
Zip f => Zip (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods zip :: WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f (a, b) # zipWith :: (a -> b -> c) -> WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f c # | |
Applicative f => CApplicative (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Applicative Methods pair :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Dom (WrapFunctor f) (a, b)) => WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f (a, b) Source # (<.>) :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Dom (WrapFunctor f) (a -> b)) => WrapFunctor f (a -> b) -> WrapFunctor f a -> WrapFunctor f b Source # (.>) :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f b Source # (<.) :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f a Source # | |
Monad m => CBind (WrapFunctor m) Source # | |
Defined in Control.Subcategory.Bind Methods (>>-) :: (Dom (WrapFunctor m) a, Dom (WrapFunctor m) b) => WrapFunctor m a -> (a -> WrapFunctor m b) -> WrapFunctor m b Source # cjoin :: (Dom (WrapFunctor m) (WrapFunctor m a), Dom (WrapFunctor m) a) => WrapFunctor m (WrapFunctor m a) -> WrapFunctor m a Source # | |
Foldable f => CFoldable (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Foldable Methods cfoldMap :: (Dom (WrapFunctor f) a, Monoid w) => (a -> w) -> WrapFunctor f a -> w Source # cfoldMap' :: (Dom (WrapFunctor f) a, Monoid m) => (a -> m) -> WrapFunctor f a -> m Source # cfold :: (Dom (WrapFunctor f) w, Monoid w) => WrapFunctor f w -> w Source # cfoldr :: Dom (WrapFunctor f) a => (a -> b -> b) -> b -> WrapFunctor f a -> b Source # cfoldlM :: (Monad m, Dom (WrapFunctor f) b) => (a -> b -> m a) -> a -> WrapFunctor f b -> m a Source # cfoldlM' :: (Monad m, Dom (WrapFunctor f) b) => (a -> b -> m a) -> a -> WrapFunctor f b -> m a Source # cfoldrM :: (Monad m, Dom (WrapFunctor f) a) => (a -> b -> m b) -> b -> WrapFunctor f a -> m b Source # cfoldrM' :: (Monad m, Dom (WrapFunctor f) a) => (a -> b -> m b) -> b -> WrapFunctor f a -> m b Source # cfoldl :: Dom (WrapFunctor f) a => (b -> a -> b) -> b -> WrapFunctor f a -> b Source # cfoldr' :: Dom (WrapFunctor f) a => (a -> b -> b) -> b -> WrapFunctor f a -> b Source # cfoldl' :: Dom (WrapFunctor f) a => (b -> a -> b) -> b -> WrapFunctor f a -> b Source # cbasicToList :: Dom (WrapFunctor f) a => WrapFunctor f a -> [a] Source # cfoldr1 :: Dom (WrapFunctor f) a => (a -> a -> a) -> WrapFunctor f a -> a Source # cfoldl1 :: Dom (WrapFunctor f) a => (a -> a -> a) -> WrapFunctor f a -> a Source # cindex :: Dom (WrapFunctor f) a => WrapFunctor f a -> Int -> a Source # cnull :: Dom (WrapFunctor f) a => WrapFunctor f a -> Bool Source # clength :: Dom (WrapFunctor f) a => WrapFunctor f a -> Int Source # cany :: Dom (WrapFunctor f) a => (a -> Bool) -> WrapFunctor f a -> Bool Source # call :: Dom (WrapFunctor f) a => (a -> Bool) -> WrapFunctor f a -> Bool Source # celem :: (Eq a, Dom (WrapFunctor f) a) => a -> WrapFunctor f a -> Bool Source # cnotElem :: (Eq a, Dom (WrapFunctor f) a) => a -> WrapFunctor f a -> Bool Source # cminimum :: (Ord a, Dom (WrapFunctor f) a) => WrapFunctor f a -> a Source # cmaximum :: (Ord a, Dom (WrapFunctor f) a) => WrapFunctor f a -> a Source # csum :: (Num a, Dom (WrapFunctor f) a) => WrapFunctor f a -> a Source # cproduct :: (Num a, Dom (WrapFunctor f) a) => WrapFunctor f a -> a Source # cctraverse_ :: (CApplicative g, CPointed g, Dom g (), Dom (WrapFunctor f) a, Dom g b) => (a -> g b) -> WrapFunctor f a -> g () Source # ctraverse_ :: (Applicative g, Dom (WrapFunctor f) a) => (a -> g b) -> WrapFunctor f a -> g () Source # clast :: Dom (WrapFunctor f) a => WrapFunctor f a -> a Source # chead :: Dom (WrapFunctor f) a => WrapFunctor f a -> a Source # cfind :: Dom (WrapFunctor f) a => (a -> Bool) -> WrapFunctor f a -> Maybe a Source # cfindIndex :: Dom (WrapFunctor f) a => (a -> Bool) -> WrapFunctor f a -> Maybe Int Source # cfindIndices :: Dom (WrapFunctor f) a => (a -> Bool) -> WrapFunctor f a -> [Int] Source # celemIndex :: (Dom (WrapFunctor f) a, Eq a) => a -> WrapFunctor f a -> Maybe Int Source # celemIndices :: (Dom (WrapFunctor f) a, Eq a) => a -> WrapFunctor f a -> [Int] Source # | |
Traversable f => CTraversable (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Foldable Methods ctraverse :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Applicative g) => (a -> g b) -> WrapFunctor f a -> g (WrapFunctor f b) Source # | |
Functor f => CFunctor (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Functor Methods cmap :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => (a -> b) -> WrapFunctor f a -> WrapFunctor f b Source # (<$:) :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => a -> WrapFunctor f b -> WrapFunctor f a Source # | |
Constrained (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Functor | |
(Functor f, Pointed f) => CPointed (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Pointed Methods cpure :: Dom (WrapFunctor f) a => a -> WrapFunctor f a Source # | |
Align f => CAlign (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Semialign Methods cnil :: Dom (WrapFunctor f) a => WrapFunctor f a Source # | |
Semialign f => CSemialign (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Semialign Methods calignWith :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Dom (WrapFunctor f) c) => (These a b -> c) -> WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f c Source # calign :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Dom (WrapFunctor f) (These a b)) => WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f (These a b) Source # | |
Repeat f => CRepeat (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Zip Methods crepeat :: Dom (WrapFunctor f) a => a -> WrapFunctor f a Source # | |
Unzip f => CUnzip (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Zip Methods cunzip :: (Dom (WrapFunctor f) (a, b), Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => WrapFunctor f (a, b) -> (WrapFunctor f a, WrapFunctor f b) Source # cunzipWith :: (Dom (WrapFunctor f) c, Dom (WrapFunctor f) a, Dom (WrapFunctor f) b) => (c -> (a, b)) -> WrapFunctor f c -> (WrapFunctor f a, WrapFunctor f b) Source # | |
Zip f => CZip (WrapFunctor f) Source # | |
Defined in Control.Subcategory.Zip Methods czipWith :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Dom (WrapFunctor f) c) => (a -> b -> c) -> WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f c Source # czip :: (Dom (WrapFunctor f) a, Dom (WrapFunctor f) b, Dom (WrapFunctor f) (a, b)) => WrapFunctor f a -> WrapFunctor f b -> WrapFunctor f (a, b) Source # | |
type Dom (WrapFunctor f) a Source # | |
Defined in Control.Subcategory.Functor |
data WrapMono mono (b :: k) where Source #
Similar to WrappedMono
from mono-traversable,
but uses
newtype instaed of GADTs, which is efficient.
To restrict the construction, we hide genuine constructor
and expose the constrained pattern synonym
monoWrapMono
and
specifies type roles tightly (note: the role for
should NOT be representational honestly; indeed,
WrapMono mono a
could be coerced to
WrapMono mono' a iff
mono and
mono' are
representationally equivalent AND Element a ~ Element a
.)
Instances
(MonoFunctor mono, Monoid mono, GrowingAppend mono) => CAlternative (WrapMono mono :: Type -> Type) Source # | |
(MonoFunctor mono, GrowingAppend mono, Semigroup mono) => CChoice (WrapMono mono :: Type -> Type) Source # | |
CBind (WrapMono IntSet :: Type -> Type) Source # | |
Defined in Control.Subcategory.Bind Methods (>>-) :: (Dom (WrapMono IntSet :: Type -> Type) a, Dom (WrapMono IntSet :: Type -> Type) b) => WrapMono IntSet a -> (a -> WrapMono IntSet b) -> WrapMono IntSet b Source # cjoin :: (Dom (WrapMono IntSet :: Type -> Type) (WrapMono IntSet a), Dom (WrapMono IntSet :: Type -> Type) a) => WrapMono IntSet (WrapMono IntSet a) -> WrapMono IntSet a Source # | |
MonoFoldable mono => CFoldable (WrapMono mono :: Type -> Type) Source # | |
Defined in Control.Subcategory.Foldable Methods cfoldMap :: (Dom (WrapMono mono :: Type -> Type) a, Monoid w) => (a -> w) -> WrapMono mono a -> w Source # cfoldMap' :: (Dom (WrapMono mono :: Type -> Type) a, Monoid m) => (a -> m) -> WrapMono mono a -> m Source # cfold :: (Dom (WrapMono mono :: Type -> Type) w, Monoid w) => WrapMono mono w -> w Source # cfoldr :: Dom (WrapMono mono :: Type -> Type) a => (a -> b -> b) -> b -> WrapMono mono a -> b Source # cfoldlM :: (Monad m, Dom (WrapMono mono :: Type -> Type) b) => (a -> b -> m a) -> a -> WrapMono mono b -> m a Source # cfoldlM' :: (Monad m, Dom (WrapMono mono :: Type -> Type) b) => (a -> b -> m a) -> a -> WrapMono mono b -> m a Source # cfoldrM :: (Monad m, Dom (WrapMono mono :: Type -> Type) a) => (a -> b -> m b) -> b -> WrapMono mono a -> m b Source # cfoldrM' :: (Monad m, Dom (WrapMono mono :: Type -> Type) a) => (a -> b -> m b) -> b -> WrapMono mono a -> m b Source # cfoldl :: Dom (WrapMono mono :: Type -> Type) a => (b -> a -> b) -> b -> WrapMono mono a -> b Source # cfoldr' :: Dom (WrapMono mono :: Type -> Type) a => (a -> b -> b) -> b -> WrapMono mono a -> b Source # cfoldl' :: Dom (WrapMono mono :: Type -> Type) a => (b -> a -> b) -> b -> WrapMono mono a -> b Source # cbasicToList :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> [a] Source # cfoldr1 :: Dom (WrapMono mono :: Type -> Type) a => (a -> a -> a) -> WrapMono mono a -> a Source # cfoldl1 :: Dom (WrapMono mono :: Type -> Type) a => (a -> a -> a) -> WrapMono mono a -> a Source # cindex :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> Int -> a Source # cnull :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> Bool Source # clength :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> Int Source # cany :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> Bool Source # call :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> Bool Source # celem :: (Eq a, Dom (WrapMono mono :: Type -> Type) a) => a -> WrapMono mono a -> Bool Source # cnotElem :: (Eq a, Dom (WrapMono mono :: Type -> Type) a) => a -> WrapMono mono a -> Bool Source # cminimum :: (Ord a, Dom (WrapMono mono :: Type -> Type) a) => WrapMono mono a -> a Source # cmaximum :: (Ord a, Dom (WrapMono mono :: Type -> Type) a) => WrapMono mono a -> a Source # csum :: (Num a, Dom (WrapMono mono :: Type -> Type) a) => WrapMono mono a -> a Source # cproduct :: (Num a, Dom (WrapMono mono :: Type -> Type) a) => WrapMono mono a -> a Source # cctraverse_ :: (CApplicative g, CPointed g, Dom g (), Dom (WrapMono mono :: Type -> Type) a, Dom g b) => (a -> g b) -> WrapMono mono a -> g () Source # ctraverse_ :: (Applicative g, Dom (WrapMono mono :: Type -> Type) a) => (a -> g b) -> WrapMono mono a -> g () Source # clast :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> a Source # chead :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> a Source # cfind :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> Maybe a Source # cfindIndex :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> Maybe Int Source # cfindIndices :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> [Int] Source # celemIndex :: (Dom (WrapMono mono :: Type -> Type) a, Eq a) => a -> WrapMono mono a -> Maybe Int Source # celemIndices :: (Dom (WrapMono mono :: Type -> Type) a, Eq a) => a -> WrapMono mono a -> [Int] Source # | |
IsSequence mono => CFreeMonoid (WrapMono mono :: Type -> Type) Source # | |
Defined in Control.Subcategory.Foldable Methods cbasicFromList :: Dom (WrapMono mono :: Type -> Type) a => [a] -> WrapMono mono a Source # ccons :: Dom (WrapMono mono :: Type -> Type) a => a -> WrapMono mono a -> WrapMono mono a Source # csnoc :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> a -> WrapMono mono a Source # cfromListN :: Dom (WrapMono mono :: Type -> Type) a => Int -> [a] -> WrapMono mono a Source # ctake :: Dom (WrapMono mono :: Type -> Type) a => Int -> WrapMono mono a -> WrapMono mono a Source # cdrop :: Dom (WrapMono mono :: Type -> Type) a => Int -> WrapMono mono a -> WrapMono mono a Source # cinit :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> WrapMono mono a Source # ctail :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> WrapMono mono a Source # csplitAt :: Dom (WrapMono mono :: Type -> Type) a => Int -> WrapMono mono a -> (WrapMono mono a, WrapMono mono a) Source # creplicate :: Dom (WrapMono mono :: Type -> Type) a => Int -> a -> WrapMono mono a Source # cgenerate :: Dom (WrapMono mono :: Type -> Type) a => Int -> (Int -> a) -> WrapMono mono a Source # cgenerateM :: (Dom (WrapMono mono :: Type -> Type) a, Monad m) => Int -> (Int -> m a) -> m (WrapMono mono a) Source # cgenerateA :: (Dom (WrapMono mono :: Type -> Type) a, Applicative g) => Int -> (Int -> g a) -> g (WrapMono mono a) Source # cuncons :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> Maybe (a, WrapMono mono a) Source # cunsnoc :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> Maybe (WrapMono mono a, a) Source # creverse :: Dom (WrapMono mono :: Type -> Type) a => WrapMono mono a -> WrapMono mono a Source # cintersperse :: Dom (WrapMono mono :: Type -> Type) a => a -> WrapMono mono a -> WrapMono mono a Source # cnub :: (Dom (WrapMono mono :: Type -> Type) a, Eq a) => WrapMono mono a -> WrapMono mono a Source # cnubOrd :: (Dom (WrapMono mono :: Type -> Type) a, Ord a) => WrapMono mono a -> WrapMono mono a Source # csort :: (Dom (WrapMono mono :: Type -> Type) a, Ord a) => WrapMono mono a -> WrapMono mono a Source # csortBy :: Dom (WrapMono mono :: Type -> Type) a => (a -> a -> Ordering) -> WrapMono mono a -> WrapMono mono a Source # cinsert :: (Dom (WrapMono mono :: Type -> Type) a, Ord a) => a -> WrapMono mono a -> WrapMono mono a Source # cinsertBy :: Dom (WrapMono mono :: Type -> Type) a => (a -> a -> Ordering) -> a -> WrapMono mono a -> WrapMono mono a Source # ctakeWhile :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> WrapMono mono a Source # cdropWhile :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> WrapMono mono a Source # cspan :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> (WrapMono mono a, WrapMono mono a) Source # cbreak :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> (WrapMono mono a, WrapMono mono a) Source # cfilter :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> WrapMono mono a Source # cpartition :: Dom (WrapMono mono :: Type -> Type) a => (a -> Bool) -> WrapMono mono a -> (WrapMono mono a, WrapMono mono a) Source # | |
MonoTraversable mono => CTraversable (WrapMono mono :: Type -> Type) Source # | |
MonoFunctor a => CFunctor (WrapMono a :: Type -> Type) Source # | |
Defined in Control.Subcategory.Functor | |
Constrained (WrapMono mono :: Type -> Type) Source # | |
Defined in Control.Subcategory.Functor | |
CPointed (WrapMono IntSet :: Type -> Type) Source # | |
MonoPointed mono => CPointed (WrapMono mono :: Type -> Type) Source # | |
(IsSequence mono, MonoZip mono) => CAlign (WrapMono mono :: Type -> Type) Source # | |
CSemialign (WrapMono IntSet :: Type -> Type) Source # | |
Defined in Control.Subcategory.Semialign Methods calignWith :: (Dom (WrapMono IntSet :: Type -> Type) a, Dom (WrapMono IntSet :: Type -> Type) b, Dom (WrapMono IntSet :: Type -> Type) c) => (These a b -> c) -> WrapMono IntSet a -> WrapMono IntSet b -> WrapMono IntSet c Source # calign :: (Dom (WrapMono IntSet :: Type -> Type) a, Dom (WrapMono IntSet :: Type -> Type) b, Dom (WrapMono IntSet :: Type -> Type) (These a b)) => WrapMono IntSet a -> WrapMono IntSet b -> WrapMono IntSet (These a b) Source # | |
(IsSequence mono, MonoZip mono) => CSemialign (WrapMono mono :: Type -> Type) Source # | |
Defined in Control.Subcategory.Semialign Methods calignWith :: (Dom (WrapMono mono :: Type -> Type) a, Dom (WrapMono mono :: Type -> Type) b, Dom (WrapMono mono :: Type -> Type) c) => (These a b -> c) -> WrapMono mono a -> WrapMono mono b -> WrapMono mono c Source # calign :: (Dom (WrapMono mono :: Type -> Type) a, Dom (WrapMono mono :: Type -> Type) b, Dom (WrapMono mono :: Type -> Type) (These a b)) => WrapMono mono a -> WrapMono mono b -> WrapMono mono (These a b) Source # | |
(IsSequence mono, MonoZip mono) => CUnzip (WrapMono mono :: Type -> Type) Source # | |
Defined in Control.Subcategory.Zip Methods cunzip :: (Dom (WrapMono mono :: Type -> Type) (a, b), Dom (WrapMono mono :: Type -> Type) a, Dom (WrapMono mono :: Type -> Type) b) => WrapMono mono (a, b) -> (WrapMono mono a, WrapMono mono b) Source # cunzipWith :: (Dom (WrapMono mono :: Type -> Type) c, Dom (WrapMono mono :: Type -> Type) a, Dom (WrapMono mono :: Type -> Type) b) => (c -> (a, b)) -> WrapMono mono c -> (WrapMono mono a, WrapMono mono b) Source # | |
(IsSequence mono, MonoZip mono) => CZip (WrapMono mono :: Type -> Type) Source # | |
Defined in Control.Subcategory.Zip Methods czipWith :: (Dom (WrapMono mono :: Type -> Type) a, Dom (WrapMono mono :: Type -> Type) b, Dom (WrapMono mono :: Type -> Type) c) => (a -> b -> c) -> WrapMono mono a -> WrapMono mono b -> WrapMono mono c Source # czip :: (Dom (WrapMono mono :: Type -> Type) a, Dom (WrapMono mono :: Type -> Type) b, Dom (WrapMono mono :: Type -> Type) (a, b)) => WrapMono mono a -> WrapMono mono b -> WrapMono mono (a, b) Source # | |
Monoid mono => Monoid (WrapMono mono b) Source # | |
Semigroup mono => Semigroup (WrapMono mono b) Source # | |
MonoFoldable mono => GrowingAppend (WrapMono mono b) Source # | |
Defined in Control.Subcategory.Wrapper.Internal | |
MonoFoldable mono => MonoFoldable (WrapMono mono b) Source # | |
Defined in Control.Subcategory.Wrapper.Internal Methods ofoldMap :: Monoid m => (Element (WrapMono mono b) -> m) -> WrapMono mono b -> m # ofoldr :: (Element (WrapMono mono b) -> b0 -> b0) -> b0 -> WrapMono mono b -> b0 # ofoldl' :: (a -> Element (WrapMono mono b) -> a) -> a -> WrapMono mono b -> a # otoList :: WrapMono mono b -> [Element (WrapMono mono b)] # oall :: (Element (WrapMono mono b) -> Bool) -> WrapMono mono b -> Bool # oany :: (Element (WrapMono mono b) -> Bool) -> WrapMono mono b -> Bool # onull :: WrapMono mono b -> Bool # olength :: WrapMono mono b -> Int # olength64 :: WrapMono mono b -> Int64 # ocompareLength :: Integral i => WrapMono mono b -> i -> Ordering # otraverse_ :: Applicative f => (Element (WrapMono mono b) -> f b0) -> WrapMono mono b -> f () # ofor_ :: Applicative f => WrapMono mono b -> (Element (WrapMono mono b) -> f b0) -> f () # omapM_ :: Applicative m => (Element (WrapMono mono b) -> m ()) -> WrapMono mono b -> m () # oforM_ :: Applicative m => WrapMono mono b -> (Element (WrapMono mono b) -> m ()) -> m () # ofoldlM :: Monad m => (a -> Element (WrapMono mono b) -> m a) -> a -> WrapMono mono b -> m a # ofoldMap1Ex :: Semigroup m => (Element (WrapMono mono b) -> m) -> WrapMono mono b -> m # ofoldr1Ex :: (Element (WrapMono mono b) -> Element (WrapMono mono b) -> Element (WrapMono mono b)) -> WrapMono mono b -> Element (WrapMono mono b) # ofoldl1Ex' :: (Element (WrapMono mono b) -> Element (WrapMono mono b) -> Element (WrapMono mono b)) -> WrapMono mono b -> Element (WrapMono mono b) # headEx :: WrapMono mono b -> Element (WrapMono mono b) # lastEx :: WrapMono mono b -> Element (WrapMono mono b) # unsafeHead :: WrapMono mono b -> Element (WrapMono mono b) # unsafeLast :: WrapMono mono b -> Element (WrapMono mono b) # maximumByEx :: (Element (WrapMono mono b) -> Element (WrapMono mono b) -> Ordering) -> WrapMono mono b -> Element (WrapMono mono b) # minimumByEx :: (Element (WrapMono mono b) -> Element (WrapMono mono b) -> Ordering) -> WrapMono mono b -> Element (WrapMono mono b) # oelem :: Element (WrapMono mono b) -> WrapMono mono b -> Bool # onotElem :: Element (WrapMono mono b) -> WrapMono mono b -> Bool # | |
MonoFunctor mono => MonoFunctor (WrapMono mono b) Source # | |
MonoPointed mono => MonoPointed (WrapMono mono b) Source # | |
type Dom (WrapMono mono :: Type -> Type) b Source # | |
type Element (WrapMono mono b) Source # | |
Defined in Control.Subcategory.Wrapper.Internal |
coerceToMono :: WrapMono mono (Element mono) -> mono Source #