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

Proarrow.Profunctor.List

Documentation

data LIST k Source Comments #

Constructors

L [k] 

Instances

Instances details
HasFreeK Monoidal LIST Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Free

Associated Types

type Lift Monoidal LIST (a :: k) 
Instance details

Defined in Proarrow.Profunctor.Free

type Lift Monoidal LIST (a :: k) = 'L '[a]
type Retract Monoidal LIST (a :: LIST k) 
Instance details

Defined in Proarrow.Profunctor.Free

type Retract Monoidal LIST (a :: LIST k) = Fold (UN ('L :: [k] -> LIST k) a)

Methods

liftK :: forall k (a :: k) (b :: k). CategoryOf k => (a ~> b) -> Lift Monoidal LIST a ~> Lift Monoidal LIST b Source Comments #

retractK :: forall k (a :: LIST k) (b :: LIST k). Monoidal k => (a ~> b) -> Retract Monoidal LIST a ~> Retract Monoidal LIST b Source Comments #

MonoidalAction m k => MonoidalAction m (LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

withObAct :: forall (a :: m) (x :: LIST k) r. (Ob a, Ob x) => (Ob (Act a x) => r) -> r Source Comments #

unitor :: forall (x :: LIST k). Ob x => Act (Unit :: m) x ~> x Source Comments #

unitorInv :: forall (x :: LIST k). Ob x => x ~> Act (Unit :: m) x Source Comments #

multiplicator :: forall (a :: m) (b :: m) (x :: LIST k). (Ob a, Ob b, Ob x) => Act a (Act b x) ~> Act (a ** b) x Source Comments #

multiplicatorInv :: forall (a :: m) (b :: m) (x :: LIST k). (Ob a, Ob b, Ob x) => Act (a ** b) x ~> Act a (Act b x) Source Comments #

CategoryOf k => Monoidal (LIST k) Source Comments #

The free monoidal category on a category.

Instance details

Defined in Proarrow.Profunctor.List

Associated Types

type Unit 
Instance details

Defined in Proarrow.Profunctor.List

type Unit = 'L ('[] :: [k])

Methods

withOb2 :: forall (a :: LIST k) (b :: LIST k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

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

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

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

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

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

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

CategoryOf k => CategoryOf (LIST k) Source Comments #

The category of lists of arrows.

Instance details

Defined in Proarrow.Profunctor.List

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Profunctor.List

type (~>) = List ((~>) :: CAT k)
Strong m p => Strong m (List p :: LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

act :: forall (a :: m) (b :: m) (x :: LIST k) (y :: LIST j). (a ~> b) -> List p x y -> List p (Act a x) (Act b y) Source Comments #

Profunctor p => MonoidalProfunctor (List p :: LIST k -> LIST j -> Type) Source Comments #

The free monoidal profunctor on a profunctor.

Instance details

Defined in Proarrow.Profunctor.List

Methods

par0 :: List p (Unit :: LIST k) (Unit :: LIST j) Source Comments #

par :: forall (x1 :: LIST k) (x2 :: LIST j) (y1 :: LIST k) (y2 :: LIST j). List p x1 x2 -> List p y1 y2 -> List p (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (List p :: LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

dimap :: forall (c :: LIST k) (a :: LIST k) (b :: LIST j) (d :: LIST j). (c ~> a) -> (b ~> d) -> List p a b -> List p c d Source Comments #

(\\) :: forall (a :: LIST k) (b :: LIST j) r. ((Ob a, Ob b) => r) -> List p a b -> r Source Comments #

Representable p => Representable (List p :: LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

index :: forall (a :: LIST k) (b :: LIST j). List p a b -> a ~> (List p % b) Source Comments #

tabulate :: forall (b :: LIST j) (a :: LIST k). Ob b => (a ~> (List p % b)) -> List p a b Source Comments #

repMap :: forall (a :: LIST j) (b :: LIST j). (a ~> b) -> (List p % a) ~> (List p % b) Source Comments #

DaggerProfunctor p => DaggerProfunctor (List p :: LIST j -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

dagger :: forall (a :: LIST j) (b :: LIST j). List p a b -> List p b a Source Comments #

Promonad p => Promonad (List p :: LIST j -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

id :: forall (a :: LIST j). Ob a => List p a a Source Comments #

(.) :: forall (b :: LIST j) (c :: LIST j) (a :: LIST j). List p b c -> List p a b -> List p a c Source Comments #

Functor (List :: (j +-> k) -> LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

map :: forall (a :: j +-> k) (b :: j +-> k). (a ~> b) -> List a ~> List b Source Comments #

type Lift Monoidal LIST (a :: k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Free

type Lift Monoidal LIST (a :: k) = 'L '[a]
type Retract Monoidal LIST (a :: LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Free

type Retract Monoidal LIST (a :: LIST k) = Fold (UN ('L :: [k] -> LIST k) a)
type Act (a :: m) ('L (b ': bs) :: LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type Act (a :: m) ('L (b ': bs) :: LIST k) = 'L (Act a b ': UN ('L :: [k] -> LIST k) (Act a ('L bs)))
type Act (a :: m) ('L ('[] :: [k]) :: LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type Act (a :: m) ('L ('[] :: [k]) :: LIST k) = 'L ('[] :: [k])
type Unit Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type Unit = 'L ('[] :: [k])
type (~>) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type (~>) = List ((~>) :: CAT k)
type Ob (as :: LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type Ob (as :: LIST k) = (Is ('L :: [k] -> LIST k) as, IsList (UN ('L :: [k] -> LIST k) as))
type (p :: LIST k) ** (q :: LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type (p :: LIST k) ** (q :: LIST k) = 'L (UN ('L :: [k] -> LIST k) p ++ UN ('L :: [k] -> LIST k) q)
type UN ('L :: [k] -> LIST k) ('L as :: LIST k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type UN ('L :: [k] -> LIST k) ('L as :: LIST k) = as
type (List p :: LIST k -> LIST j -> Type) % ('L (a ': as) :: LIST j) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type (List p :: LIST k -> LIST j -> Type) % ('L (a ': as) :: LIST j) = 'L ((p % a) ': UN ('L :: [k] -> LIST k) (List p % 'L as))
type (List p :: LIST k -> LIST j -> Type) % ('L ('[] :: [j]) :: LIST j) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type (List p :: LIST k -> LIST j -> Type) % ('L ('[] :: [j]) :: LIST j) = 'L ('[] :: [k])

data List (p :: j +-> k) (as :: LIST k) (bs :: LIST j) where Source Comments #

Constructors

Nil :: forall {j} {k} (p :: j +-> k). List p ('L ('[] :: [k])) ('L ('[] :: [j])) 
Cons :: forall {k} {j} (as1 :: [k]) (bs1 :: [j]) (p :: j +-> k) (a :: k) (b :: j). (IsList as1, IsList bs1) => p a b -> List p ('L as1) ('L bs1) -> List p ('L (a ': as1)) ('L (b ': bs1)) 

Instances

Instances details
Strong m p => Strong m (List p :: LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

act :: forall (a :: m) (b :: m) (x :: LIST k) (y :: LIST j). (a ~> b) -> List p x y -> List p (Act a x) (Act b y) Source Comments #

Profunctor p => MonoidalProfunctor (List p :: LIST k -> LIST j -> Type) Source Comments #

The free monoidal profunctor on a profunctor.

Instance details

Defined in Proarrow.Profunctor.List

Methods

par0 :: List p (Unit :: LIST k) (Unit :: LIST j) Source Comments #

par :: forall (x1 :: LIST k) (x2 :: LIST j) (y1 :: LIST k) (y2 :: LIST j). List p x1 x2 -> List p y1 y2 -> List p (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (List p :: LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

dimap :: forall (c :: LIST k) (a :: LIST k) (b :: LIST j) (d :: LIST j). (c ~> a) -> (b ~> d) -> List p a b -> List p c d Source Comments #

(\\) :: forall (a :: LIST k) (b :: LIST j) r. ((Ob a, Ob b) => r) -> List p a b -> r Source Comments #

Representable p => Representable (List p :: LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

index :: forall (a :: LIST k) (b :: LIST j). List p a b -> a ~> (List p % b) Source Comments #

tabulate :: forall (b :: LIST j) (a :: LIST k). Ob b => (a ~> (List p % b)) -> List p a b Source Comments #

repMap :: forall (a :: LIST j) (b :: LIST j). (a ~> b) -> (List p % a) ~> (List p % b) Source Comments #

DaggerProfunctor p => DaggerProfunctor (List p :: LIST j -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

dagger :: forall (a :: LIST j) (b :: LIST j). List p a b -> List p b a Source Comments #

Promonad p => Promonad (List p :: LIST j -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

id :: forall (a :: LIST j). Ob a => List p a a Source Comments #

(.) :: forall (b :: LIST j) (c :: LIST j) (a :: LIST j). List p b c -> List p a b -> List p a c Source Comments #

Functor (List :: (j +-> k) -> LIST k -> LIST j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

Methods

map :: forall (a :: j +-> k) (b :: j +-> k). (a ~> b) -> List a ~> List b Source Comments #

type (List p :: LIST k -> LIST j -> Type) % ('L (a ': as) :: LIST j) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type (List p :: LIST k -> LIST j -> Type) % ('L (a ': as) :: LIST j) = 'L ((p % a) ': UN ('L :: [k] -> LIST k) (List p % 'L as))
type (List p :: LIST k -> LIST j -> Type) % ('L ('[] :: [j]) :: LIST j) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.List

type (List p :: LIST k -> LIST j -> Type) % ('L ('[] :: [j]) :: LIST j) = 'L ('[] :: [k])

mkCons :: forall {k1} {k2} p (a :: k2) (b :: k1) (as :: [k2]) (bs :: [k1]). Profunctor p => p a b -> List p ('L as) ('L bs) -> List p ('L (a ': as)) ('L (b ': bs)) Source Comments #