proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Category.Monoidal.Strictified

Documentation

(||) :: forall k (as :: [k]) (bs :: [k]) (cs :: [k]) (ds :: [k]). Monoidal k => (as ~> bs) -> (cs ~> ds) -> (as ++ cs) ~> (bs ++ ds) infixl 8 Source Comments #

(==) :: forall k (a :: k) (b :: k) (c :: k). CategoryOf k => (a ~> b) -> (b ~> c) -> a ~> c infixl 7 Source Comments #

type family (as :: [k]) ++ (bs :: [k]) :: [k] where ... Source Comments #

Equations

('[] :: [k]) ++ (bs :: [k]) = bs 
(a ': as :: [k]) ++ (bs :: [k]) = a ': (as ++ bs) 

data SList (as :: [k]) where Source Comments #

Constructors

Nil :: forall {k}. SList ('[] :: [k]) 
Cons :: forall {k} (a :: k) (as1 :: [k]). (Ob a, Ob as1) => Obj a -> SList as1 -> SList (a ': as1) 

class ((as ++ bs) ++ cs) ~ (as ++ (bs ++ cs)) => Assoc (as :: [k]) (bs :: [k]) (cs :: [k]) Source Comments #

Instances

Instances details
(as ++ (bs ++ cs)) ~ ((as ++ bs) ++ cs) => Assoc (as :: [k]) (bs :: [k]) (cs :: [k]) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

class (CategoryOf k, as ~ (as ++ ('[] :: [k])), forall (bs :: [k]) (cs :: [k]). Assoc as bs cs) => IsList (as :: [k]) where Source Comments #

Methods

sList :: SList as Source Comments #

Instances

Instances details
CategoryOf k => IsList ('[] :: [k]) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

sList :: SList ('[] :: [k]) Source Comments #

(Ob a, Ob as) => IsList (a ': as :: [k]) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

sList :: SList (a ': as) Source Comments #

type family Fold (as :: [k]) :: k where ... Source Comments #

Equations

Fold ('[] :: [k]) = Unit :: k 
Fold ('[a] :: [k]) = a 
Fold (a ': as :: [k]) = a ** Fold as 

fold :: forall {k} (as :: [k]). Monoidal k => SList as -> Fold as ~> Fold as Source Comments #

concatFold :: forall {k} (as :: [k]) (bs :: [k]). (Ob as, Ob bs, Monoidal k) => (Fold as ** Fold bs) ~> Fold (as ++ bs) Source Comments #

splitFold :: forall {k} (as :: [k]) (bs :: [k]). (Ob as, Ob bs, Monoidal k) => Fold (as ++ bs) ~> (Fold as ** Fold bs) Source Comments #

data Strictified (as :: [k]) (bs :: [k]) where Source Comments #

Constructors

Str :: forall {k} (as :: [k]) (bs :: [k]). (Ob as, Ob bs) => (Fold as ~> Fold bs) -> Strictified as bs 

Instances

Instances details
Monoidal k => Promonad (Strictified :: [k] -> [k] -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

id :: forall (a :: [k]). Ob a => Strictified a a Source Comments #

(.) :: forall (b :: [k]) (c :: [k]) (a :: [k]). Strictified b c -> Strictified a b -> Strictified a c Source Comments #

Monoidal k => MonoidalProfunctor (Strictified :: [k] -> [k] -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

par0 :: Strictified (Unit :: [k]) (Unit :: [k]) Source Comments #

par :: forall (x1 :: [k]) (x2 :: [k]) (y1 :: [k]) (y2 :: [k]). Strictified x1 x2 -> Strictified y1 y2 -> Strictified (x1 ** y1) (x2 ** y2) Source Comments #

Monoidal k => Profunctor (Strictified :: [k] -> [k] -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

dimap :: forall (c :: [k]) (a :: [k]) (b :: [k]) (d :: [k]). (c ~> a) -> (b ~> d) -> Strictified a b -> Strictified c d Source Comments #

(\\) :: forall (a :: [k]) (b :: [k]) r. ((Ob a, Ob b) => r) -> Strictified a b -> r Source Comments #

singleton :: forall k (a :: k) (b :: k). CategoryOf k => (a ~> b) -> '[a] ~> '[b] Source Comments #

asObj :: forall k (as :: [k]). Monoidal k => SList as -> Obj as Source Comments #

Orphan instances

Monoidal k => Monoidal [k] Source Comments # 
Instance details

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

type Unit = '[] :: [k]

Methods

leftUnitor :: forall (a :: [k]). Ob a => ((Unit :: [k]) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: [k]). Ob a => a ~> ((Unit :: [k]) ** a) Source Comments #

rightUnitor :: forall (a :: [k]). Ob a => (a ** (Unit :: [k])) ~> a Source Comments #

rightUnitorInv :: forall (a :: [k]). Ob a => a ~> (a ** (Unit :: [k])) Source Comments #

associator :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal k => CategoryOf [k] Source Comments # 
Instance details

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

type (~>) = Strictified :: [k] -> [k] -> Type