freelude-0.1.0.1: A generalisation of the Category->Functor->Applicative->Monad hierarchy and more

Safe HaskellNone
LanguageHaskell2010

Freelude.Impl.Category

Documentation

class Semigroupoid p where Source #

Minimal complete definition

(.)

Methods

(.) :: (CategoryC p b c, CategoryC p a b, CategoryC p a c) => CategoryT p b c -> CategoryT p a b -> CategoryT p a c infixr 9 Source #

Instances

Semigroupoid FunctionP Source # 
Semigroupoid p => Semigroupoid (Identity p) Source # 

Methods

(.) :: (CategoryC (Identity p) b c, CategoryC (Identity p) a b, CategoryC (Identity p) a c) => CategoryT (Identity p) b c -> CategoryT (Identity p) a b -> CategoryT (Identity p) a c Source #

Semigroupoid p => Semigroupoid (Dual p) Source # 

Methods

(.) :: (CategoryC (Dual p) b c, CategoryC (Dual p) a b, CategoryC (Dual p) a c) => CategoryT (Dual p) b c -> CategoryT (Dual p) a b -> CategoryT (Dual p) a c Source #

Semigroup m => Semigroupoid (MonoidAsCategory m) Source # 
(Semigroupoid p1, Semigroupoid p2) => Semigroupoid (p1, p2) Source # 

Methods

(.) :: (CategoryC (p1, p2) b c, CategoryC (p1, p2) a b, CategoryC (p1, p2) a c) => CategoryT (p1, p2) b c -> CategoryT (p1, p2) a b -> CategoryT (p1, p2) a c Source #

Semigroupoid p => Semigroupoid (FunctorCategoryP (BasicFunctorP (* -> *) []) p) Source # 
Semigroupoid p => Semigroupoid (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) Source # 
(Semigroupoid p1, Semigroupoid p2, Semigroupoid p3) => Semigroupoid (p1, p2, p3) Source # 

Methods

(.) :: (CategoryC (p1, p2, p3) b c, CategoryC (p1, p2, p3) a b, CategoryC (p1, p2, p3) a c) => CategoryT (p1, p2, p3) b c -> CategoryT (p1, p2, p3) a b -> CategoryT (p1, p2, p3) a c Source #

(Semigroupoid p1, Semigroupoid p2, Semigroupoid p3, Semigroupoid p4) => Semigroupoid (p1, p2, p3, p4) Source # 

Methods

(.) :: (CategoryC (p1, p2, p3, p4) b c, CategoryC (p1, p2, p3, p4) a b, CategoryC (p1, p2, p3, p4) a c) => CategoryT (p1, p2, p3, p4) b c -> CategoryT (p1, p2, p3, p4) a b -> CategoryT (p1, p2, p3, p4) a c Source #

(Semigroupoid p1, Semigroupoid p2, Semigroupoid p3, Semigroupoid p4, Semigroupoid p5) => Semigroupoid (p1, p2, p3, p4, p5) Source # 

Methods

(.) :: (CategoryC (p1, p2, p3, p4, p5) b c, CategoryC (p1, p2, p3, p4, p5) a b, CategoryC (p1, p2, p3, p4, p5) a c) => CategoryT (p1, p2, p3, p4, p5) b c -> CategoryT (p1, p2, p3, p4, p5) a b -> CategoryT (p1, p2, p3, p4, p5) a c Source #

(<<<) :: (Semigroupoid p, CategoryC p b c, CategoryC p a b, CategoryC p a c) => CategoryT p b c -> CategoryT p a b -> CategoryT p a c Source #

(>>>) :: (Semigroupoid p, CategoryC p a b, CategoryC p b c, CategoryC p a c) => CategoryT p a b -> CategoryT p b c -> CategoryT p a c Source #

class Semigroupoid p => Category p where Source #

Minimal complete definition

id

Methods

id :: (CategoryC p a a, ExoCategoryC p a a, t ~ CategoryT p a a, t ~ ExoCategoryT p a a) => t Source #

Instances

Category FunctionP Source # 

Methods

id :: (CategoryC FunctionP a a, ExoCategoryC FunctionP a a, (Type ~ t) (CategoryT FunctionP a a), (Type ~ t) (ExoCategoryT FunctionP a a)) => t Source #

Category p => Category (Identity p) Source # 

Methods

id :: (CategoryC (Identity p) a a, ExoCategoryC (Identity p) a a, (Type ~ t) (CategoryT (Identity p) a a), (Type ~ t) (ExoCategoryT (Identity p) a a)) => t Source #

Category p => Category (Dual p) Source # 

Methods

id :: (CategoryC (Dual p) a a, ExoCategoryC (Dual p) a a, (Type ~ t) (CategoryT (Dual p) a a), (Type ~ t) (ExoCategoryT (Dual p) a a)) => t Source #

(Semigroup m, Monoid m) => Category (MonoidAsCategory m) Source # 
Semigroupoid p => Category (FunctorCategoryP (BasicFunctorP (* -> *) []) p) Source # 

Methods

id :: (CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a, ExoCategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a, (Type ~ t) (CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a), (Type ~ t) (ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a)) => t Source #

Semigroupoid p => Category (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) Source # 

class (Category p, Const p) => Arr p where Source #

Minimal complete definition

arr

Methods

arr :: CategoryC p a b => (a -> b) -> CategoryT p a b Source #

data FunctionP Source #

Instances

Arr FunctionP Source # 

Methods

arr :: CategoryC FunctionP a b => (a -> b) -> CategoryT FunctionP a b Source #

Const FunctionP Source # 

Methods

const :: CategoryC FunctionP a b => b -> CategoryT FunctionP a b Source #

Category FunctionP Source # 

Methods

id :: (CategoryC FunctionP a a, ExoCategoryC FunctionP a a, (Type ~ t) (CategoryT FunctionP a a), (Type ~ t) (ExoCategoryT FunctionP a a)) => t Source #

Semigroupoid FunctionP Source # 
Functor FunctionP (BasicFunctorP (* -> *) []) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) []) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) []) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorDstC (BasicFunctorP (* -> *) []) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Functor FunctionP (BasicFunctorP (* -> *) Maybe) Source # 
Functor FunctionP (BasicFunctorP (* -> *) IO) Source # 
Functor FunctionP (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) (Either a)) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) (Either a)) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Ix i => Functor FunctionP (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) (Array i)) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) (Array i)) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorDstC (BasicFunctorP (* -> *) (Array i)) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Functor FunctionP (BasicFunctorP (* -> *) Min) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Max) Source # 
Functor FunctionP (BasicFunctorP (* -> *) First) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Last) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Option) Source # 
Functor FunctionP (BasicFunctorP (* -> *) NonEmpty) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Identity) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Tree) Source # 
Arr (Identity FunctionP) Source # 

Methods

arr :: CategoryC (Identity FunctionP) a b => (a -> b) -> CategoryT (Identity FunctionP) a b Source #

Const (Identity FunctionP) Source # 
Arr (FunctorCategoryP (BasicFunctorP (* -> *) []) FunctionP) Source # 
Arr (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) FunctionP) Source # 
Const (FunctorCategoryP (BasicFunctorP (* -> *) []) FunctionP) Source # 
Const (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) FunctionP) Source # 
(ExoFunctor p1 FunctionP, ExoFunctor p2 FunctionP) => ExoFunctor (p1, p2) FunctionP Source # 

Methods

exomap :: (ExoCategoryC (p1, p2) a b, ExoCategoryC FunctionP a b) => ExoCategoryT (p1, p2) a b -> ExoCategoryT FunctionP a b Source #

ExoFunctor p FunctionP => ExoFunctor (FunctorCategoryP (BasicFunctorP (* -> *) []) p) FunctionP Source # 
ExoFunctor p FunctionP => ExoFunctor (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) FunctionP Source # 
(ExoFunctor p1 FunctionP, ExoFunctor p2 FunctionP, ExoFunctor p3 FunctionP) => ExoFunctor (p1, p2, p3) FunctionP Source # 

Methods

exomap :: (ExoCategoryC (p1, p2, p3) a b, ExoCategoryC FunctionP a b) => ExoCategoryT (p1, p2, p3) a b -> ExoCategoryT FunctionP a b Source #

(ExoFunctor p1 FunctionP, ExoFunctor p2 FunctionP, ExoFunctor p3 FunctionP, ExoFunctor p4 FunctionP) => ExoFunctor (p1, p2, p3, p4) FunctionP Source # 

Methods

exomap :: (ExoCategoryC (p1, p2, p3, p4) a b, ExoCategoryC FunctionP a b) => ExoCategoryT (p1, p2, p3, p4) a b -> ExoCategoryT FunctionP a b Source #

(ExoFunctor p1 FunctionP, ExoFunctor p2 FunctionP, ExoFunctor p3 FunctionP, ExoFunctor p4 FunctionP, ExoFunctor p5 FunctionP) => ExoFunctor (p1, p2, p3, p4, p5) FunctionP Source # 

Methods

exomap :: (ExoCategoryC (p1, p2, p3, p4, p5) a b, ExoCategoryC FunctionP a b) => ExoCategoryT (p1, p2, p3, p4, p5) a b -> ExoCategoryT FunctionP a b Source #

type CategoryDstC' FunctionP Source # 
type CategorySrcC' FunctionP Source # 
type ExoCategoryDstC FunctionP b Source # 
type ExoCategorySrcC FunctionP a Source # 
type ExoCategoryT FunctionP a b Source # 
type ExoCategoryT FunctionP a b = a -> b
type CategoryT FunctionP a b Source # 
type CategoryT FunctionP a b = a -> b

type family CategoryT (p :: Type) (a :: Type) (b :: Type) = (f :: Type) | f -> p a b Source #

Instances

type CategoryT FunctionP a b Source # 
type CategoryT FunctionP a b = a -> b
type CategoryT (Identity p) a b Source # 
type CategoryT (Identity p) a b = Identity (CategoryT p a b)
type CategoryT (Dual p) a b Source # 
type CategoryT (Dual p) a b = Dual (CategoryT p b a)
type CategoryT (MonoidAsCategory a) Void Void Source # 
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a b Source # 
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a b = [CategoryT p a b]
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) a b Source # 
type CategoryT (p1, p2) (a1, a2) (b1, b2) Source # 
type CategoryT (p1, p2) (a1, a2) (b1, b2) = (CategoryT p1 a1 b1, CategoryT p2 a2 b2)
type CategoryT (p1, p2, p3) (a1, a2, a3) (b1, b2, b3) Source # 
type CategoryT (p1, p2, p3) (a1, a2, a3) (b1, b2, b3) = (CategoryT p1 a1 b1, CategoryT p2 a2 b2, CategoryT p3 a3 b3)
type CategoryT (p1, p2, p3, p4) (a1, a2, a3, a4) (b1, b2, b3, b4) Source # 
type CategoryT (p1, p2, p3, p4) (a1, a2, a3, a4) (b1, b2, b3, b4) = (CategoryT p1 a1 b1, CategoryT p2 a2 b2, CategoryT p3 a3 b3, CategoryT p4 a4 b4)
type CategoryT (p1, p2, p3, p4, p5) (a1, a2, a3, a4, a5) (b1, b2, b3, b4, b5) Source # 
type CategoryT (p1, p2, p3, p4, p5) (a1, a2, a3, a4, a5) (b1, b2, b3, b4, b5) = (CategoryT p1 a1 b1, CategoryT p2 a2 b2, CategoryT p3 a3 b3, CategoryT p4 a4 b4, CategoryT p5 a5 b5)

type family ExoCategoryT (p :: Type) (a :: Type) (b :: Type) = (f :: Type) | f -> p a b Source #

Instances

type ExoCategoryT FunctionP a b Source # 
type ExoCategoryT FunctionP a b = a -> b
type ExoCategoryT (Identity p) a b Source # 
type ExoCategoryT (Dual p) a b Source # 
type ExoCategoryT (Dual p) a b = Dual (ExoCategoryT p b a)
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) [a] [b] Source # 
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) [a] [b] = [ExoCategoryT p a b]
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) (Maybe a) (Maybe b) Source # 
type ExoCategoryT (p1, p2) (a1, a2) (b1, b2) Source # 
type ExoCategoryT (p1, p2) (a1, a2) (b1, b2) = (ExoCategoryT p1 a1 b1, ExoCategoryT p2 a2 b2)
type ExoCategoryT (p1, p2, p3) (a1, a2, a3) (b1, b2, b3) Source # 
type ExoCategoryT (p1, p2, p3) (a1, a2, a3) (b1, b2, b3) = (ExoCategoryT p1 a1 b1, ExoCategoryT p2 a2 b2, ExoCategoryT p3 a3 b3)
type ExoCategoryT (p1, p2, p3, p4) (a1, a2, a3, a4) (b1, b2, b3, b4) Source # 
type ExoCategoryT (p1, p2, p3, p4) (a1, a2, a3, a4) (b1, b2, b3, b4) = (ExoCategoryT p1 a1 b1, ExoCategoryT p2 a2 b2, ExoCategoryT p3 a3 b3, ExoCategoryT p4 a4 b4)
type ExoCategoryT (p1, p2, p3, p4, p5) (a1, a2, a3, a4, a5) (b1, b2, b3, b4, b5) Source # 
type ExoCategoryT (p1, p2, p3, p4, p5) (a1, a2, a3, a4, a5) (b1, b2, b3, b4, b5) = (ExoCategoryT p1 a1 b1, ExoCategoryT p2 a2 b2, ExoCategoryT p3 a3 b3, ExoCategoryT p4 a4 b4, ExoCategoryT p5 a5 b5)

type family CategorySrcC' (p :: Type) :: Maybe (Type -> Constraint) Source #

Instances

type CategorySrcC' FunctionP Source # 
type CategorySrcC' (Identity p) Source # 
type CategorySrcC' (Dual p) Source # 
type CategorySrcC' (MonoidAsCategory _) Source # 
type CategorySrcC' (p1, p2) Source # 
type CategorySrcC' (p1, p2)
type CategorySrcC' (FunctorCategoryP _ p) Source # 
type CategorySrcC' (p1, p2, p3) Source # 
type CategorySrcC' (p1, p2, p3)
type CategorySrcC' (p1, p2, p3, p4) Source # 
type CategorySrcC' (p1, p2, p3, p4)
type CategorySrcC' (p1, p2, p3, p4, p5) Source # 
type CategorySrcC' (p1, p2, p3, p4, p5)

type family ExoCategorySrcC (p :: Type) (a :: Type) :: Constraint Source #

Instances

type ExoCategorySrcC FunctionP a Source # 
type ExoCategorySrcC (Identity p) a Source # 
type ExoCategorySrcC (Dual p) a Source # 
type ExoCategorySrcC (p1, p2) a Source # 
type ExoCategorySrcC (p1, p2) a = (TupleConstraint 2 a, ExoCategorySrcC p1 (IndexT 0 a), ExoCategorySrcC p2 (IndexT 1 a))
type ExoCategorySrcC (FunctorCategoryP functorP p) a Source # 
type ExoCategorySrcC (FunctorCategoryP functorP p) a = (ExoCategorySrcC p (IndexC 1 0 a), (~) Type a (FunctorT functorP (IndexC 1 0 a)))
type ExoCategorySrcC (p1, p2, p3) a Source # 
type ExoCategorySrcC (p1, p2, p3) a = (TupleConstraint 3 a, ExoCategorySrcC p1 (IndexT 0 a), ExoCategorySrcC p2 (IndexT 1 a), ExoCategorySrcC p3 (IndexT 2 a))
type ExoCategorySrcC (p1, p2, p3, p4) a Source # 
type ExoCategorySrcC (p1, p2, p3, p4) a = (TupleConstraint 4 a, ExoCategorySrcC p1 (IndexT 0 a), ExoCategorySrcC p2 (IndexT 1 a), ExoCategorySrcC p3 (IndexT 2 a), ExoCategorySrcC p4 (IndexT 3 a))
type ExoCategorySrcC (p1, p2, p3, p4, p5) a Source # 
type ExoCategorySrcC (p1, p2, p3, p4, p5) a = (TupleConstraint 5 a, ExoCategorySrcC p1 (IndexT 0 a), ExoCategorySrcC p2 (IndexT 1 a), ExoCategorySrcC p3 (IndexT 2 a), ExoCategorySrcC p4 (IndexT 3 a), ExoCategorySrcC p5 (IndexT 4 a))

type family CategoryDstC' (p :: Type) :: Maybe (Type -> Constraint) Source #

Instances

type CategoryDstC' FunctionP Source # 
type CategoryDstC' (Identity p) Source # 
type CategoryDstC' (Dual p) Source # 
type CategoryDstC' (MonoidAsCategory _) Source # 
type CategoryDstC' (p1, p2) Source # 
type CategoryDstC' (p1, p2)
type CategoryDstC' (FunctorCategoryP _ p) Source # 
type CategoryDstC' (p1, p2, p3) Source # 
type CategoryDstC' (p1, p2, p3)
type CategoryDstC' (p1, p2, p3, p4) Source # 
type CategoryDstC' (p1, p2, p3, p4)
type CategoryDstC' (p1, p2, p3, p4, p5) Source # 
type CategoryDstC' (p1, p2, p3, p4, p5)

type family ExoCategoryDstC (p :: Type) (b :: Type) :: Constraint Source #

Instances

type ExoCategoryDstC FunctionP b Source # 
type ExoCategoryDstC (Identity p) b Source # 
type ExoCategoryDstC (Dual p) b Source # 
type ExoCategoryDstC (p1, p2) b Source # 
type ExoCategoryDstC (p1, p2) b = (TupleConstraint 2 b, ExoCategoryDstC p1 (IndexT 0 b), ExoCategoryDstC p2 (IndexT 1 b))
type ExoCategoryDstC (FunctorCategoryP functorP p) b Source # 
type ExoCategoryDstC (FunctorCategoryP functorP p) b = (ExoCategoryDstC p (IndexC 1 0 b), (~) Type b (FunctorT functorP (IndexC 1 0 b)))
type ExoCategoryDstC (p1, p2, p3) b Source # 
type ExoCategoryDstC (p1, p2, p3) b = (TupleConstraint 3 b, ExoCategoryDstC p1 (IndexT 0 b), ExoCategoryDstC p2 (IndexT 1 b), ExoCategoryDstC p3 (IndexT 2 b))
type ExoCategoryDstC (p1, p2, p3, p4) b Source # 
type ExoCategoryDstC (p1, p2, p3, p4) b = (TupleConstraint 4 b, ExoCategoryDstC p1 (IndexT 0 b), ExoCategoryDstC p2 (IndexT 1 b), ExoCategoryDstC p3 (IndexT 2 b), ExoCategoryDstC p4 (IndexT 3 b))
type ExoCategoryDstC (p1, p2, p3, p4, p5) b Source # 
type ExoCategoryDstC (p1, p2, p3, p4, p5) b = (TupleConstraint 5 b, ExoCategoryDstC p1 (IndexT 0 b), ExoCategoryDstC p2 (IndexT 1 b), ExoCategoryDstC p3 (IndexT 2 b), ExoCategoryDstC p4 (IndexT 3 b), ExoCategoryDstC p5 (IndexT 4 b))

type CategoryC p a b = (CategorySrcC p a, CategoryDstC p b) Source #

type IsSemigroupoid t p a b = (Semigroupoid p, t ~ CategoryT p a b, CategoryC p a b) Source #

type ExoIsSemigroupoid t p a b = (Semigroupoid p, t ~ ExoCategoryT p a b, ExoCategoryC p a b) Source #

type IsCategory t p a b = (IsSemigroupoid t p a b, Category p) Source #

type ExoIsCategory t p a b = (ExoIsSemigroupoid t p a b, Category p) Source #

type family FunctorT (p :: Type) (a :: Type) = (b :: Type) | b -> p a Source #

Instances

type FunctorT (BasicFunctorP (* -> *) []) a Source # 
type FunctorT (BasicFunctorP (* -> *) []) a = [a]
type FunctorT (BasicFunctorP (* -> *) Maybe) a Source # 
type FunctorT (BasicFunctorP (* -> *) Maybe) a = Maybe a
type FunctorT (BasicFunctorP (* -> *) IO) a Source # 
type FunctorT (BasicFunctorP (* -> *) IO) a = IO a
type FunctorT (BasicFunctorP (* -> *) (Either a)) b Source # 
type FunctorT (BasicFunctorP (* -> *) (Either a)) b = Either a b
type FunctorT (BasicFunctorP (* -> *) (Array i)) e Source # 
type FunctorT (BasicFunctorP (* -> *) (Array i)) e = Array i e
type FunctorT (BasicFunctorP (* -> *) Min) a Source # 
type FunctorT (BasicFunctorP (* -> *) Min) a = Min a
type FunctorT (BasicFunctorP (* -> *) Max) a Source # 
type FunctorT (BasicFunctorP (* -> *) Max) a = Max a
type FunctorT (BasicFunctorP (* -> *) First) a Source # 
type FunctorT (BasicFunctorP (* -> *) First) a = First a
type FunctorT (BasicFunctorP (* -> *) Last) a Source # 
type FunctorT (BasicFunctorP (* -> *) Last) a = Last a
type FunctorT (BasicFunctorP (* -> *) Option) a Source # 
type FunctorT (BasicFunctorP (* -> *) NonEmpty) a Source # 
type FunctorT (BasicFunctorP (* -> *) Identity) a Source # 
type FunctorT (BasicFunctorP (* -> *) Tree) a Source # 
type FunctorT (BasicFunctorP (* -> *) Tree) a = Tree a

type family FunctorSrcC' (p :: Type) :: Maybe (Type -> Constraint) Source #

type family FunctorDstC' (p :: Type) :: Maybe (Type -> Constraint) Source #

type family FromMaybeConstraintFunc (p :: Maybe (Type -> Constraint)) :: Type -> Constraint where ... Source #

Equations

FromMaybeConstraintFunc Nothing = EmptyConstraint 
FromMaybeConstraintFunc (Just c) = c 

data BasicFunctorP f Source #

Instances

Functor FunctionP (BasicFunctorP (* -> *) []) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) []) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) []) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorDstC (BasicFunctorP (* -> *) []) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Functor FunctionP (BasicFunctorP (* -> *) Maybe) Source # 
Functor FunctionP (BasicFunctorP (* -> *) IO) Source # 
Functor FunctionP (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) (Either a)) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) (Either a)) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Ix i => Functor FunctionP (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) (Array i)) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) (Array i)) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorDstC (BasicFunctorP (* -> *) (Array i)) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Functor FunctionP (BasicFunctorP (* -> *) Min) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Max) Source # 
Functor FunctionP (BasicFunctorP (* -> *) First) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Last) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Option) Source # 
Functor FunctionP (BasicFunctorP (* -> *) NonEmpty) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Identity) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Tree) Source # 
Monad (BasicFunctorP (* -> *) []) Source # 

Methods

(>>=) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) b) => FunctorT (BasicFunctorP (* -> *) []) a -> (a -> FunctorT (BasicFunctorP (* -> *) []) b) -> FunctorT (BasicFunctorP (* -> *) []) b Source #

(>>) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) b) => FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) b Source #

Monad (BasicFunctorP (* -> *) Maybe) Source # 
Monad (BasicFunctorP (* -> *) IO) Source # 
Monad (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

(>>=) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> (a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b) -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

(>>) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

Monad (BasicFunctorP (* -> *) Min) Source # 
Monad (BasicFunctorP (* -> *) Max) Source # 
Monad (BasicFunctorP (* -> *) First) Source # 
Monad (BasicFunctorP (* -> *) Last) Source # 
Monad (BasicFunctorP (* -> *) Option) Source # 
Monad (BasicFunctorP (* -> *) NonEmpty) Source # 
Monad (BasicFunctorP (* -> *) Identity) Source # 
Monad (BasicFunctorP (* -> *) Tree) Source # 
Pure (BasicFunctorP (* -> *) []) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) []) a => a -> FunctorT (BasicFunctorP (* -> *) []) a Source #

Pure (BasicFunctorP (* -> *) Maybe) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Maybe) a => a -> FunctorT (BasicFunctorP (* -> *) Maybe) a Source #

Pure (BasicFunctorP (* -> *) IO) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) IO) a => a -> FunctorT (BasicFunctorP (* -> *) IO) a Source #

Pure (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) (Either a)) a => a -> FunctorT (BasicFunctorP (* -> *) (Either a)) a Source #

(Ix i, Num i) => Pure (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) (Array i)) a => a -> FunctorT (BasicFunctorP (* -> *) (Array i)) a Source #

Pure (BasicFunctorP (* -> *) Min) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Min) a => a -> FunctorT (BasicFunctorP (* -> *) Min) a Source #

Pure (BasicFunctorP (* -> *) Max) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Max) a => a -> FunctorT (BasicFunctorP (* -> *) Max) a Source #

Pure (BasicFunctorP (* -> *) First) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) First) a => a -> FunctorT (BasicFunctorP (* -> *) First) a Source #

Pure (BasicFunctorP (* -> *) Last) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Last) a => a -> FunctorT (BasicFunctorP (* -> *) Last) a Source #

Pure (BasicFunctorP (* -> *) Option) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Option) a => a -> FunctorT (BasicFunctorP (* -> *) Option) a Source #

Pure (BasicFunctorP (* -> *) NonEmpty) Source # 
Pure (BasicFunctorP (* -> *) Identity) Source # 
Pure (BasicFunctorP (* -> *) Tree) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Tree) a => a -> FunctorT (BasicFunctorP (* -> *) Tree) a Source #

Apply (BasicFunctorP (* -> *) []) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) []) (a -> b) -> FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b Source #

Apply (BasicFunctorP (* -> *) Maybe) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Maybe) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Maybe) a -> FunctorT (BasicFunctorP (* -> *) Maybe) b Source #

Apply (BasicFunctorP (* -> *) IO) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) IO) (a -> b) -> FunctorT (BasicFunctorP (* -> *) IO) a -> FunctorT (BasicFunctorP (* -> *) IO) b Source #

Apply (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) (Either a)) (a -> b) -> FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

Apply (BasicFunctorP (* -> *) Min) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Min) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Min) a -> FunctorT (BasicFunctorP (* -> *) Min) b Source #

Apply (BasicFunctorP (* -> *) Max) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Max) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Max) a -> FunctorT (BasicFunctorP (* -> *) Max) b Source #

Apply (BasicFunctorP (* -> *) First) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) First) (a -> b) -> FunctorT (BasicFunctorP (* -> *) First) a -> FunctorT (BasicFunctorP (* -> *) First) b Source #

Apply (BasicFunctorP (* -> *) Last) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Last) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Last) a -> FunctorT (BasicFunctorP (* -> *) Last) b Source #

Apply (BasicFunctorP (* -> *) Option) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Option) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Option) a -> FunctorT (BasicFunctorP (* -> *) Option) b Source #

Apply (BasicFunctorP (* -> *) NonEmpty) Source # 
Apply (BasicFunctorP (* -> *) Identity) Source # 
Apply (BasicFunctorP (* -> *) Tree) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Tree) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Tree) a -> FunctorT (BasicFunctorP (* -> *) Tree) b Source #

Lift (BasicFunctorP (* -> *) []) Source # 

Methods

liftA2 :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) c) => (a -> b -> c) -> FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) c Source #

(*>) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) b) => FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) b Source #

(<*) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) a) => FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) a Source #

Lift (BasicFunctorP (* -> *) Maybe) Source # 
Lift (BasicFunctorP (* -> *) IO) Source # 
Lift (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

liftA2 :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) c) => (a -> b -> c) -> FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) c Source #

(*>) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

(<*) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) a) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) a Source #

(Ix i, Num i) => Lift (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

liftA2 :: (FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) b, FunctorDstC (BasicFunctorP (* -> *) (Array i)) c) => (a -> b -> c) -> FunctorT (BasicFunctorP (* -> *) (Array i)) a -> FunctorT (BasicFunctorP (* -> *) (Array i)) b -> FunctorT (BasicFunctorP (* -> *) (Array i)) c Source #

(*>) :: (FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) b, FunctorDstC (BasicFunctorP (* -> *) (Array i)) b) => FunctorT (BasicFunctorP (* -> *) (Array i)) a -> FunctorT (BasicFunctorP (* -> *) (Array i)) b -> FunctorT (BasicFunctorP (* -> *) (Array i)) b Source #

(<*) :: (FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) b, FunctorDstC (BasicFunctorP (* -> *) (Array i)) a) => FunctorT (BasicFunctorP (* -> *) (Array i)) a -> FunctorT (BasicFunctorP (* -> *) (Array i)) b -> FunctorT (BasicFunctorP (* -> *) (Array i)) a Source #

Lift (BasicFunctorP (* -> *) Min) Source # 
Lift (BasicFunctorP (* -> *) Max) Source # 
Lift (BasicFunctorP (* -> *) First) Source # 
Lift (BasicFunctorP (* -> *) Last) Source # 
Lift (BasicFunctorP (* -> *) Option) Source # 
Lift (BasicFunctorP (* -> *) NonEmpty) Source # 
Lift (BasicFunctorP (* -> *) Identity) Source # 
Lift (BasicFunctorP (* -> *) Tree) Source # 
Arr (FunctorCategoryP (BasicFunctorP (* -> *) []) FunctionP) Source # 
Arr (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) FunctionP) Source # 
Const (FunctorCategoryP (BasicFunctorP (* -> *) []) FunctionP) Source # 
Const (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) FunctionP) Source # 
Semigroupoid p => Category (FunctorCategoryP (BasicFunctorP (* -> *) []) p) Source # 

Methods

id :: (CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a, ExoCategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a, (Type ~ t) (CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a), (Type ~ t) (ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a)) => t Source #

Semigroupoid p => Category (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) Source # 
Semigroupoid p => Semigroupoid (FunctorCategoryP (BasicFunctorP (* -> *) []) p) Source # 
Semigroupoid p => Semigroupoid (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) Source # 
Functor cat p => Functor (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) a b, CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) a b -> CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) ra rb Source #

Functor cat p => Functor (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) a b, CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) a b -> CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) ra rb Source #

ExoFunctor p FunctionP => ExoFunctor (FunctorCategoryP (BasicFunctorP (* -> *) []) p) FunctionP Source # 
ExoFunctor p FunctionP => ExoFunctor (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) FunctionP Source # 
type FunctorDstC' (BasicFunctorP k _) Source # 
type FunctorSrcC' (BasicFunctorP k _) Source # 
type FunctorT (BasicFunctorP (* -> *) []) a Source # 
type FunctorT (BasicFunctorP (* -> *) []) a = [a]
type FunctorT (BasicFunctorP (* -> *) Maybe) a Source # 
type FunctorT (BasicFunctorP (* -> *) Maybe) a = Maybe a
type FunctorT (BasicFunctorP (* -> *) IO) a Source # 
type FunctorT (BasicFunctorP (* -> *) IO) a = IO a
type FunctorT (BasicFunctorP (* -> *) (Either a)) b Source # 
type FunctorT (BasicFunctorP (* -> *) (Either a)) b = Either a b
type FunctorT (BasicFunctorP (* -> *) (Array i)) e Source # 
type FunctorT (BasicFunctorP (* -> *) (Array i)) e = Array i e
type FunctorT (BasicFunctorP (* -> *) Min) a Source # 
type FunctorT (BasicFunctorP (* -> *) Min) a = Min a
type FunctorT (BasicFunctorP (* -> *) Max) a Source # 
type FunctorT (BasicFunctorP (* -> *) Max) a = Max a
type FunctorT (BasicFunctorP (* -> *) First) a Source # 
type FunctorT (BasicFunctorP (* -> *) First) a = First a
type FunctorT (BasicFunctorP (* -> *) Last) a Source # 
type FunctorT (BasicFunctorP (* -> *) Last) a = Last a
type FunctorT (BasicFunctorP (* -> *) Option) a Source # 
type FunctorT (BasicFunctorP (* -> *) NonEmpty) a Source # 
type FunctorT (BasicFunctorP (* -> *) Identity) a Source # 
type FunctorT (BasicFunctorP (* -> *) Tree) a Source # 
type FunctorT (BasicFunctorP (* -> *) Tree) a = Tree a
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a b Source # 
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a b = [CategoryT p a b]
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) a b Source # 
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) [a] [b] Source # 
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) [a] [b] = [ExoCategoryT p a b]
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) (Maybe a) (Maybe b) Source # 

data FunctorCategoryP (functorP :: Type) (p :: Type) Source #

Instances

Arr (FunctorCategoryP (BasicFunctorP (* -> *) []) FunctionP) Source # 
Arr (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) FunctionP) Source # 
Const (FunctorCategoryP (BasicFunctorP (* -> *) []) FunctionP) Source # 
Const (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) FunctionP) Source # 
Semigroupoid p => Category (FunctorCategoryP (BasicFunctorP (* -> *) []) p) Source # 

Methods

id :: (CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a, ExoCategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a, (Type ~ t) (CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a), (Type ~ t) (ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a a)) => t Source #

Semigroupoid p => Category (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) Source # 
Semigroupoid p => Semigroupoid (FunctorCategoryP (BasicFunctorP (* -> *) []) p) Source # 
Semigroupoid p => Semigroupoid (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) Source # 
Functor cat p => Functor (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) a b, CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) a b -> CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) ra rb Source #

Functor cat p => Functor (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) a b, CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) a b -> CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) ra rb Source #

ExoFunctor p FunctionP => ExoFunctor (FunctorCategoryP (BasicFunctorP (* -> *) []) p) FunctionP Source # 
ExoFunctor p FunctionP => ExoFunctor (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) FunctionP Source # 
type CategoryDstC' (FunctorCategoryP _ p) Source # 
type CategorySrcC' (FunctorCategoryP _ p) Source # 
type ExoCategoryDstC (FunctorCategoryP functorP p) b Source # 
type ExoCategoryDstC (FunctorCategoryP functorP p) b = (ExoCategoryDstC p (IndexC 1 0 b), (~) Type b (FunctorT functorP (IndexC 1 0 b)))
type ExoCategorySrcC (FunctorCategoryP functorP p) a Source # 
type ExoCategorySrcC (FunctorCategoryP functorP p) a = (ExoCategorySrcC p (IndexC 1 0 a), (~) Type a (FunctorT functorP (IndexC 1 0 a)))
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a b Source # 
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) a b = [CategoryT p a b]
type CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) a b Source # 
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) [a] [b] Source # 
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) p) [a] [b] = [ExoCategoryT p a b]
type ExoCategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) p) (Maybe a) (Maybe b) Source # 

class Semigroupoid cat => Functor cat p where Source #

Methods

fmap :: (ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT cat a b -> CategoryT cat ra rb Source #

fmap :: (Lift p, Pure p, ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b, cat ~ FunctionP, FunctorSrcC' p ~ Nothing, FunctorDstC' p ~ Nothing) => CategoryT cat a b -> CategoryT cat ra rb Source #

Instances

Functor FunctionP (BasicFunctorP (* -> *) []) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) []) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) []) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorDstC (BasicFunctorP (* -> *) []) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Functor FunctionP (BasicFunctorP (* -> *) Maybe) Source # 
Functor FunctionP (BasicFunctorP (* -> *) IO) Source # 
Functor FunctionP (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) (Either a)) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) (Either a)) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Ix i => Functor FunctionP (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT (BasicFunctorP (* -> *) (Array i)) a), (Type ~ rb) (FunctorT (BasicFunctorP (* -> *) (Array i)) b), CategoryC FunctionP a b, CategoryC FunctionP ra rb, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorDstC (BasicFunctorP (* -> *) (Array i)) b) => CategoryT FunctionP a b -> CategoryT FunctionP ra rb Source #

Functor FunctionP (BasicFunctorP (* -> *) Min) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Max) Source # 
Functor FunctionP (BasicFunctorP (* -> *) First) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Last) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Option) Source # 
Functor FunctionP (BasicFunctorP (* -> *) NonEmpty) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Identity) Source # 
Functor FunctionP (BasicFunctorP (* -> *) Tree) Source # 
Functor cat p => Functor (Identity cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (Identity cat) a b, CategoryC (Identity cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (Identity cat) a b -> CategoryT (Identity cat) ra rb Source #

Functor cat p => Functor (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) a b, CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) a b -> CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) []) cat) ra rb Source #

Functor cat p => Functor (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) p Source # 

Methods

fmap :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) a b, CategoryC (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) a b -> CategoryT (FunctorCategoryP (BasicFunctorP (* -> *) Maybe) cat) ra rb Source #

(<$>) :: (Functor cat p, ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b) => CategoryT cat a b -> CategoryT cat ra rb infixl 4 Source #

class Functor cat p => ConstFunctor cat p where Source #

Methods

(<$) :: (ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b) => b -> CategoryT cat ra rb infixl 4 Source #

(<$) :: (Const cat, ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b) => b -> CategoryT cat ra rb infixl 4 Source #

Instances

(Functor cat p, Const cat) => ConstFunctor cat p Source # 

Methods

(<$) :: ((Type ~ ra) (FunctorT p a), (Type ~ rb) (FunctorT p b), CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b) => b -> CategoryT cat ra rb Source #

class Pure p where Source #

Minimal complete definition

pure

Methods

pure :: FunctorDstC p a => a -> FunctorT p a Source #

Instances

Pure (BasicFunctorP (* -> *) []) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) []) a => a -> FunctorT (BasicFunctorP (* -> *) []) a Source #

Pure (BasicFunctorP (* -> *) Maybe) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Maybe) a => a -> FunctorT (BasicFunctorP (* -> *) Maybe) a Source #

Pure (BasicFunctorP (* -> *) IO) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) IO) a => a -> FunctorT (BasicFunctorP (* -> *) IO) a Source #

Pure (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) (Either a)) a => a -> FunctorT (BasicFunctorP (* -> *) (Either a)) a Source #

(Ix i, Num i) => Pure (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) (Array i)) a => a -> FunctorT (BasicFunctorP (* -> *) (Array i)) a Source #

Pure (BasicFunctorP (* -> *) Min) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Min) a => a -> FunctorT (BasicFunctorP (* -> *) Min) a Source #

Pure (BasicFunctorP (* -> *) Max) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Max) a => a -> FunctorT (BasicFunctorP (* -> *) Max) a Source #

Pure (BasicFunctorP (* -> *) First) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) First) a => a -> FunctorT (BasicFunctorP (* -> *) First) a Source #

Pure (BasicFunctorP (* -> *) Last) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Last) a => a -> FunctorT (BasicFunctorP (* -> *) Last) a Source #

Pure (BasicFunctorP (* -> *) Option) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Option) a => a -> FunctorT (BasicFunctorP (* -> *) Option) a Source #

Pure (BasicFunctorP (* -> *) NonEmpty) Source # 
Pure (BasicFunctorP (* -> *) Identity) Source # 
Pure (BasicFunctorP (* -> *) Tree) Source # 

Methods

pure :: FunctorDstC (BasicFunctorP (* -> *) Tree) a => a -> FunctorT (BasicFunctorP (* -> *) Tree) a Source #

class Functor FunctionP p => Lift p where Source #

Methods

liftA2 :: (FunctorSrcC p a, FunctorSrcC p b, FunctorDstC p c) => (a -> b -> c) -> FunctorT p a -> FunctorT p b -> FunctorT p c Source #

liftA2 :: (Monad p, Pure p, FunctorSrcC' p ~ Nothing, FunctorDstC' p ~ Nothing) => (a -> b -> c) -> FunctorT p a -> FunctorT p b -> FunctorT p c Source #

(*>) :: (FunctorSrcC p a, FunctorSrcC p b, FunctorDstC p b) => FunctorT p a -> FunctorT p b -> FunctorT p b infixl 4 Source #

(<*) :: (FunctorSrcC p a, FunctorSrcC p b, FunctorDstC p a) => FunctorT p a -> FunctorT p b -> FunctorT p a infixl 4 Source #

Instances

Lift (BasicFunctorP (* -> *) []) Source # 

Methods

liftA2 :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) c) => (a -> b -> c) -> FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) c Source #

(*>) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) b) => FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) b Source #

(<*) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) a) => FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) a Source #

Lift (BasicFunctorP (* -> *) Maybe) Source # 
Lift (BasicFunctorP (* -> *) IO) Source # 
Lift (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

liftA2 :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) c) => (a -> b -> c) -> FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) c Source #

(*>) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

(<*) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) a) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) a Source #

(Ix i, Num i) => Lift (BasicFunctorP (* -> *) (Array i)) Source # 

Methods

liftA2 :: (FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) b, FunctorDstC (BasicFunctorP (* -> *) (Array i)) c) => (a -> b -> c) -> FunctorT (BasicFunctorP (* -> *) (Array i)) a -> FunctorT (BasicFunctorP (* -> *) (Array i)) b -> FunctorT (BasicFunctorP (* -> *) (Array i)) c Source #

(*>) :: (FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) b, FunctorDstC (BasicFunctorP (* -> *) (Array i)) b) => FunctorT (BasicFunctorP (* -> *) (Array i)) a -> FunctorT (BasicFunctorP (* -> *) (Array i)) b -> FunctorT (BasicFunctorP (* -> *) (Array i)) b Source #

(<*) :: (FunctorSrcC (BasicFunctorP (* -> *) (Array i)) a, FunctorSrcC (BasicFunctorP (* -> *) (Array i)) b, FunctorDstC (BasicFunctorP (* -> *) (Array i)) a) => FunctorT (BasicFunctorP (* -> *) (Array i)) a -> FunctorT (BasicFunctorP (* -> *) (Array i)) b -> FunctorT (BasicFunctorP (* -> *) (Array i)) a Source #

Lift (BasicFunctorP (* -> *) Min) Source # 
Lift (BasicFunctorP (* -> *) Max) Source # 
Lift (BasicFunctorP (* -> *) First) Source # 
Lift (BasicFunctorP (* -> *) Last) Source # 
Lift (BasicFunctorP (* -> *) Option) Source # 
Lift (BasicFunctorP (* -> *) NonEmpty) Source # 
Lift (BasicFunctorP (* -> *) Identity) Source # 
Lift (BasicFunctorP (* -> *) Tree) Source # 

class Lift p => Apply p where Source #

Methods

(<*>) :: FunctorT p (a -> b) -> FunctorT p a -> FunctorT p b infixl 4 Source #

(<*>) :: (FunctorSrcC' p ~ Nothing, FunctorDstC' p ~ Nothing) => FunctorT p (a -> b) -> FunctorT p a -> FunctorT p b infixl 4 Source #

Instances

Apply (BasicFunctorP (* -> *) []) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) []) (a -> b) -> FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b Source #

Apply (BasicFunctorP (* -> *) Maybe) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Maybe) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Maybe) a -> FunctorT (BasicFunctorP (* -> *) Maybe) b Source #

Apply (BasicFunctorP (* -> *) IO) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) IO) (a -> b) -> FunctorT (BasicFunctorP (* -> *) IO) a -> FunctorT (BasicFunctorP (* -> *) IO) b Source #

Apply (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) (Either a)) (a -> b) -> FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

Apply (BasicFunctorP (* -> *) Min) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Min) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Min) a -> FunctorT (BasicFunctorP (* -> *) Min) b Source #

Apply (BasicFunctorP (* -> *) Max) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Max) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Max) a -> FunctorT (BasicFunctorP (* -> *) Max) b Source #

Apply (BasicFunctorP (* -> *) First) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) First) (a -> b) -> FunctorT (BasicFunctorP (* -> *) First) a -> FunctorT (BasicFunctorP (* -> *) First) b Source #

Apply (BasicFunctorP (* -> *) Last) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Last) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Last) a -> FunctorT (BasicFunctorP (* -> *) Last) b Source #

Apply (BasicFunctorP (* -> *) Option) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Option) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Option) a -> FunctorT (BasicFunctorP (* -> *) Option) b Source #

Apply (BasicFunctorP (* -> *) NonEmpty) Source # 
Apply (BasicFunctorP (* -> *) Identity) Source # 
Apply (BasicFunctorP (* -> *) Tree) Source # 

Methods

(<*>) :: FunctorT (BasicFunctorP (* -> *) Tree) (a -> b) -> FunctorT (BasicFunctorP (* -> *) Tree) a -> FunctorT (BasicFunctorP (* -> *) Tree) b Source #

(<**>) :: Apply p => FunctorT p a -> FunctorT p (a -> b) -> FunctorT p b infixl 4 Source #

type Applicative p = (Apply p, Pure p) Source #

class (Lift p, Pure p) => Monad p where Source #

Minimal complete definition

(>>=)

Methods

(>>=) :: (FunctorSrcC p a, FunctorSrcC p b, FunctorDstC p b) => FunctorT p a -> (a -> FunctorT p b) -> FunctorT p b infixl 1 Source #

(>>) :: (FunctorSrcC p a, FunctorSrcC p b, FunctorDstC p b) => FunctorT p a -> FunctorT p b -> FunctorT p b infixl 1 Source #

Instances

Monad (BasicFunctorP (* -> *) []) Source # 

Methods

(>>=) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) b) => FunctorT (BasicFunctorP (* -> *) []) a -> (a -> FunctorT (BasicFunctorP (* -> *) []) b) -> FunctorT (BasicFunctorP (* -> *) []) b Source #

(>>) :: (FunctorSrcC (BasicFunctorP (* -> *) []) a, FunctorSrcC (BasicFunctorP (* -> *) []) b, FunctorDstC (BasicFunctorP (* -> *) []) b) => FunctorT (BasicFunctorP (* -> *) []) a -> FunctorT (BasicFunctorP (* -> *) []) b -> FunctorT (BasicFunctorP (* -> *) []) b Source #

Monad (BasicFunctorP (* -> *) Maybe) Source # 
Monad (BasicFunctorP (* -> *) IO) Source # 
Monad (BasicFunctorP (* -> *) (Either a)) Source # 

Methods

(>>=) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> (a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b) -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

(>>) :: (FunctorSrcC (BasicFunctorP (* -> *) (Either a)) a, FunctorSrcC (BasicFunctorP (* -> *) (Either a)) b, FunctorDstC (BasicFunctorP (* -> *) (Either a)) b) => FunctorT (BasicFunctorP (* -> *) (Either a)) a -> FunctorT (BasicFunctorP (* -> *) (Either a)) b -> FunctorT (BasicFunctorP (* -> *) (Either a)) b Source #

Monad (BasicFunctorP (* -> *) Min) Source # 
Monad (BasicFunctorP (* -> *) Max) Source # 
Monad (BasicFunctorP (* -> *) First) Source # 
Monad (BasicFunctorP (* -> *) Last) Source # 
Monad (BasicFunctorP (* -> *) Option) Source # 
Monad (BasicFunctorP (* -> *) NonEmpty) Source # 
Monad (BasicFunctorP (* -> *) Identity) Source # 
Monad (BasicFunctorP (* -> *) Tree) Source # 

return :: (Monad p, FunctorDstC p a) => a -> FunctorT p a Source #

(=<<) :: (Monad p, FunctorSrcC p a, FunctorSrcC p b, FunctorDstC p b) => (a -> FunctorT p b) -> FunctorT p a -> FunctorT p b infixr 1 Source #