| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Bool
Description
The thin category of booleans: objects FLS and TRU with one non-identity arrow
, the poset FLS ~> TRUFalse <= True, a.k.a. the walking arrow. It is a core type.
Thin categories are enriched in it (Proarrow.Category.Enriched.Thin), so this module depends
on nothing but Proarrow.Core. The further structure of BOOL (conjunction as product and
tensor, disjunction as coproduct, closed, star-autonomous, (co)equalizers, pullbacks/pushouts,
a parameterized NNO) is instantiated in the modules that define those classes.
Synopsis
- data BOOL
- data Booleans (a :: BOOL) (b :: BOOL) where
- type family If (c :: BOOL) (t :: k) (e :: k) :: k where ...
- type family Not (b :: BOOL) :: BOOL where ...
- type family FromBool (b :: Bool) :: BOOL where ...
- class IsBool (Not b) => IsBool (b :: BOOL) where
- type family BoolLeq (a :: BOOL) (b :: BOOL) :: BOOL where ...
- data NonTrivialProfunctor (ft :: (BOOL, BOOL)) (a :: BOOL) (b :: BOOL) where
- type family NonTrivialHolds (ff :: BOOL) (tt :: BOOL) (a :: BOOL) (b :: BOOL) :: BOOL where ...
Documentation
Instances
| Quantale BOOL Source Github # | The walking arrow: the tensor is conjunction, the join disjunction. | ||||||||||||||||
Defined in Proarrow.Category.Enriched.Quantale | |||||||||||||||||
| Enumerable BOOL Source Github # | |||||||||||||||||
| Finite BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin Associated Types
| |||||||||||||||||
| Indexed BOOL Source Github # | |||||||||||||||||
| Monoidal BOOL Source Github # | Products as monoidal structure. | ||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct Associated Types
Methods withOb2 :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: BOOL). Ob a => ((Unit :: BOOL) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: BOOL). Ob a => a ~> ((Unit :: BOOL) ** a) Source Github # rightUnitor :: forall (a :: BOOL). Ob a => (a ** (Unit :: BOOL)) ~> a Source Github # rightUnitorInv :: forall (a :: BOOL). Ob a => a ~> (a ** (Unit :: BOOL)) Source Github # associator :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| SymMonoidal BOOL Source Github # | |||||||||||||||||
| Closed BOOL Source Github # | Implication is the internal hom of the walking arrow: | ||||||||||||||||
Defined in Proarrow.Category.Monoidal.Closed Associated Types
Methods withObExp :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a ~~> b) => r) -> r Source Github # curry :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b) => ((a ** b) ~> c) -> a ~> (b ~~> c) Source Github # apply :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => ((a ~~> b) ** a) ~> b Source Github # (^^^) :: forall (a :: BOOL) (b :: BOOL) (x :: BOOL) (y :: BOOL). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Github # | |||||||||||||||||
| CopyDiscard BOOL Source Github # | |||||||||||||||||
| Distributive BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal.Distributive Methods distL :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # absorbL :: forall (a :: BOOL). Ob a => (a ** (InitialObject :: BOOL)) ~> (InitialObject :: BOOL) Source Github # absorbR :: forall (a :: BOOL). Ob a => ((InitialObject :: BOOL) ** a) ~> (InitialObject :: BOOL) Source Github # | |||||||||||||||||
| StarAutonomous BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal.StarAutonomous Associated Types
Methods withObDual :: forall (a :: BOOL) r. Ob a => (Ob (Dual a) => r) -> r Source Github # dual :: forall (a :: BOOL) (b :: BOOL). (a ~> b) -> Dual b ~> Dual a Source Github # dualInv :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => (Dual a ~> Dual b) -> b ~> a Source Github # linDist :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a ** b) ~> Dual c) -> a ~> Dual (b ** c) Source Github # linDistInv :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ~> Dual (b ** c)) -> (a ** b) ~> Dual c Source Github # doubleNeg :: forall (a :: BOOL). Ob a => Dual (Dual a) ~> a Source Github # doubleNegInv :: forall (a :: BOOL). Ob a => a ~> Dual (Dual a) Source Github # | |||||||||||||||||
| HasBinaryCoproducts BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Associated Types
Methods withObCoprod :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: BOOL) (a :: BOOL) (y :: BOOL). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: BOOL) (b :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasCoequalizers BOOL Source Github # | Dual to the | ||||||||||||||||
| HasInitialObject BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.Initial Associated Types
| |||||||||||||||||
| HasParamNNO BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.NaturalNumbers Associated Types
| |||||||||||||||||
| HasPushouts BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.Pushout | |||||||||||||||||
| CategoryOf BOOL Source Github # | The category of 2 objects and one arrow between them, a.k.a. the walking arrow. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Bool Associated Types
| |||||||||||||||||
| HasBinaryProducts BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct Associated Types
Methods withObProd :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github # fst :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => (a && b) ~> a Source Github # snd :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => (a && b) ~> b Source Github # (&&&) :: forall (a :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Github # (***) :: forall (a :: BOOL) (b :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Github # | |||||||||||||||||
| HasEqualizers BOOL Source Github # |
| ||||||||||||||||
| HasPullbacks BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.Pullback Methods pullback :: forall (o :: BOOL) (a :: BOOL) (b :: BOOL) r. (a ~> o) -> (b ~> o) -> (forall (p :: BOOL). (p ~> a) -> (p ~> b) -> r) -> r Source Github # factorPullback :: forall (a :: BOOL) (b :: BOOL) (p :: BOOL) (q :: BOOL). (p ~> a) -> (p ~> b) -> (q ~> a) -> (q ~> b) -> q ~> p Source Github # | |||||||||||||||||
| HasTerminalObject BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.Terminal Associated Types
| |||||||||||||||||
| Promonad Booleans Source Github # | |||||||||||||||||
| Ob a => CocommutativeComonoid (a :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Monoid | |||||||||||||||||
| CommutativeMonoid 'TRU Source Github # | |||||||||||||||||
Defined in Proarrow.Monoid | |||||||||||||||||
| Ob a => Comonoid (a :: BOOL) Source Github # | |||||||||||||||||
| Monoid 'TRU Source Github # | |||||||||||||||||
| Finitary Booleans Source Github # |
| ||||||||||||||||
Defined in Proarrow.Category.Enriched.Finitary Methods size :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => Natural Source Github # toIndex :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => Booleans a b -> Natural Source Github # fromIndex :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => Natural -> Booleans a b Source Github # elements :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => [Booleans a b] Source Github # | |||||||||||||||||
| DecidableProfunctor Booleans Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin | |||||||||||||||||
| ThinProfunctor Booleans Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin | |||||||||||||||||
| InternalIn BOOL FINSET Source Github # |
| ||||||||||||||||
Defined in Proarrow.Category.Internal Associated Types
Methods source :: (C1 BOOL :: FINSET) ~> (C0 BOOL :: FINSET) Source Github # target :: (C1 BOOL :: FINSET) ~> (C0 BOOL :: FINSET) Source Github # identity :: (C0 BOOL :: FINSET) ~> (C1 BOOL :: FINSET) Source Github # compose :: Cosink '[C1 BOOL :: FINSET, C1 BOOL :: FINSET, C1 BOOL :: FINSET] Source Github # | |||||||||||||||||
| MonoidalProfunctor Booleans Source Github # | |||||||||||||||||
| Profunctor Booleans Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Bool Methods dimap :: forall (c :: BOOL) (a :: BOOL) (b :: BOOL) (d :: BOOL). (c ~> a) -> (b ~> d) -> Booleans a b -> Booleans c d Source Github # lmap :: forall (c :: BOOL) (a :: BOOL) (b :: BOOL). (c ~> a) -> Booleans a b -> Booleans c b Source Github # rmap :: forall (b :: BOOL) (d :: BOOL) (a :: BOOL). (b ~> d) -> Booleans a b -> Booleans a d Source Github # (\\) :: forall (a :: BOOL) (b :: BOOL) r. ((Ob a, Ob b) => r) -> Booleans a b -> r Source Github # | |||||||||||||||||
| Corepresentable Booleans Source Github # | |||||||||||||||||
Defined in Proarrow.Profunctor.Corepresentable Associated Types
Methods coindex :: forall (a :: BOOL) (b :: BOOL). Booleans a b -> (Booleans %% a) ~> b Source Github # cotabulate :: forall (a :: BOOL) (b :: BOOL). Ob a => ((Booleans %% a) ~> b) -> Booleans a b Source Github # corepMap :: forall (a :: BOOL) (b :: BOOL). (a ~> b) -> (Booleans %% a) ~> (Booleans %% b) Source Github # corepUniv :: forall (a :: BOOL). Ob a => Booleans a (Booleans %% a) Source Github # | |||||||||||||||||
| Representable Booleans Source Github # | |||||||||||||||||
Defined in Proarrow.Profunctor.Representable Associated Types
Methods index :: forall (a :: BOOL) (b :: BOOL). Booleans a b -> a ~> (Booleans % b) Source Github # tabulate :: forall (b :: BOOL) (a :: BOOL). Ob b => (a ~> (Booleans % b)) -> Booleans a b Source Github # repMap :: forall (a :: BOOL) (b :: BOOL). (a ~> b) -> (Booleans % a) ~> (Booleans % b) Source Github # repUniv :: forall (a :: BOOL). Ob a => Booleans (Booleans % a) a Source Github # | |||||||||||||||||
| (DecidableProfunctor p, Decidable j, Decidable k) => EnrichedProfunctor BOOL (p :: j +-> k) Source Github # | A decidable thin profunctor is a profunctor enriched in the walking arrow: its hom-object is the
type-level | ||||||||||||||||
Defined in Proarrow.Category.Enriched Methods withProObj :: forall (a :: k) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj BOOL p a b) => r) -> r Source Github # underlying :: forall (a :: k) (b :: j). p a b -> (Unit :: BOOL) ~> ProObj BOOL p a b Source Github # enriched :: forall (a :: k) (b :: j). (Ob a, Ob b) => ((Unit :: BOOL) ~> ProObj BOOL p a b) -> p a b Source Github # rmap :: forall (a :: k) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj BOOL b c ** ProObj BOOL p a b) ~> ProObj BOOL p a c Source Github # lmap :: forall (a :: k) (b :: j) (c :: k). (Ob a, Ob b, Ob c) => (HomObj BOOL c a ** ProObj BOOL p a b) ~> ProObj BOOL p c b Source Github # | |||||||||||||||||
| (Ob ff, Ob tt) => DecidableProfunctor (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin Methods decide :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => Decision (NonTrivialProfunctor '(ff, tt)) a b (Holds (NonTrivialProfunctor '(ff, tt)) a b) Source Github # toHolds :: forall (a :: BOOL) (b :: BOOL) r. NonTrivialProfunctor '(ff, tt) a b -> ((Holds (NonTrivialProfunctor '(ff, tt)) a b ~ 'TRU, Ob a, Ob b) => r) -> r Source Github # | |||||||||||||||||
| (Ob ff, Ob tt) => ThinProfunctor (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin Methods arr :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b, HasArrow (NonTrivialProfunctor '(ff, tt)) a b) => NonTrivialProfunctor '(ff, tt) a b Source Github # withArr :: forall (a :: BOOL) (b :: BOOL) r. NonTrivialProfunctor '(ff, tt) a b -> ((HasArrow (NonTrivialProfunctor '(ff, tt)) a b, Ob a, Ob b) => r) -> r Source Github # | |||||||||||||||||
| Profunctor (NonTrivialProfunctor ft :: BOOL -> BOOL -> Type) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Bool Methods dimap :: forall (c :: BOOL) (a :: BOOL) (b :: BOOL) (d :: BOOL). (c ~> a) -> (b ~> d) -> NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft c d Source Github # lmap :: forall (c :: BOOL) (a :: BOOL) (b :: BOOL). (c ~> a) -> NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft c b Source Github # rmap :: forall (b :: BOOL) (d :: BOOL) (a :: BOOL). (b ~> d) -> NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft a d Source Github # (\\) :: forall (a :: BOOL) (b :: BOOL) r. ((Ob a, Ob b) => r) -> NonTrivialProfunctor ft a b -> r Source Github # | |||||||||||||||||
| (Indexed k, KnownEdges es) => DecidableProfunctor (Edges es :: DISCRETE k -> DISCRETE k -> Type) Source Github # | |||||||||||||||||
Defined in Proarrow.Profunctor.Instance.Edges | |||||||||||||||||
| (Indexed k, KnownEdges es) => ThinProfunctor (Edges es :: DISCRETE k -> DISCRETE k -> Type) Source Github # | A graph with | ||||||||||||||||
Defined in Proarrow.Profunctor.Instance.Edges | |||||||||||||||||
| Enumerable (BOOL, BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Product | |||||||||||||||||
| Finite (BOOL, BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Product | |||||||||||||||||
| Indexed (BOOL, BOOL) Source Github # | The product of two enumerable kinds is enumerable, but numbering one in general needs type-level
division to invert the pairing, which (Proarrow.Category.Sheaf uses this kind as the opens of a discrete two-point space: a pair of
booleans is a subset of | ||||||||||||||||
Defined in Proarrow.Category.Instance.Product | |||||||||||||||||
| Profunctor p => FunctorForRep (ProjTo2 p :: COLLAGE p +-> BOOL) Source Github # | |||||||||||||||||
| type Objects BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin | |||||||||||||||||
| type Unit Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct | |||||||||||||||||
| type InitialObject Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.Initial | |||||||||||||||||
| type NNO Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.NaturalNumbers | |||||||||||||||||
| type (~>) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Bool | |||||||||||||||||
| type TerminalObject Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.Terminal | |||||||||||||||||
| type At BOOL i Source Github # | |||||||||||||||||
| type Index (a :: BOOL) Source Github # | |||||||||||||||||
| type Dual (a :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal.StarAutonomous | |||||||||||||||||
| type Ob (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Bool | |||||||||||||||||
| type C0 BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Internal | |||||||||||||||||
| type C1 BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Internal | |||||||||||||||||
| type (a :: BOOL) ** (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct | |||||||||||||||||
| type (a :: BOOL) ~~> (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal.Closed | |||||||||||||||||
| type 'FLS || (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct | |||||||||||||||||
| type 'TRU || (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct | |||||||||||||||||
| type (a :: BOOL) || 'FLS Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct | |||||||||||||||||
| type (a :: BOOL) || 'TRU Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct | |||||||||||||||||
| type 'FLS && (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct | |||||||||||||||||
| type 'TRU && (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct | |||||||||||||||||
| type (a :: BOOL) && 'FLS Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct | |||||||||||||||||
| type (a :: BOOL) && 'TRU Source Github # | |||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct | |||||||||||||||||
| type Booleans %% (x :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Profunctor.Corepresentable | |||||||||||||||||
| type Booleans % (x :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Profunctor.Representable | |||||||||||||||||
| type HasArrow Booleans (a :: BOOL) (b :: BOOL) Source Github # | |||||||||||||||||
| type Holds Booleans (a :: BOOL) (b :: BOOL) Source Github # | |||||||||||||||||
| type ProObj BOOL (p :: j +-> k) (a :: k) (b :: j) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched | |||||||||||||||||
| type HasArrow (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) (a :: BOOL) (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin | |||||||||||||||||
| type Holds (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) (a :: BOOL) (b :: BOOL) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Thin type Holds (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) (a :: BOOL) (b :: BOOL) = NonTrivialHolds ff tt a b | |||||||||||||||||
| type HasArrow (Edges es :: DISCRETE k -> DISCRETE k -> Type) (a :: DISCRETE k) (b :: DISCRETE k) Source Github # | |||||||||||||||||
| type Holds (Edges es :: DISCRETE k -> DISCRETE k -> Type) (a :: DISCRETE k) (b :: DISCRETE k) Source Github # | |||||||||||||||||
| type Objects (BOOL, BOOL) Source Github # | |||||||||||||||||
| type At (BOOL, BOOL) i Source Github # | |||||||||||||||||
| type Index (a :: (BOOL, BOOL)) Source Github # | |||||||||||||||||
| type (ProjTo2 p :: COLLAGE p +-> BOOL) @ ('L a :: COLLAGE p) Source Github # | |||||||||||||||||
| type (ProjTo2 p :: COLLAGE p +-> BOOL) @ ('R a :: COLLAGE p) Source Github # | |||||||||||||||||
data Booleans (a :: BOOL) (b :: BOOL) where Source Github #
Instances
type family If (c :: BOOL) (t :: k) (e :: k) :: k where ... Source Github #
Type-level conditional on a BOOL.
type family BoolLeq (a :: BOOL) (b :: BOOL) :: BOOL where ... Source Github #
a <= b on the walking arrow, as a BOOL again: the hom of the walking arrow is its own
internal hom.
data NonTrivialProfunctor (ft :: (BOOL, BOOL)) (a :: BOOL) (b :: BOOL) where Source Github #
The four non-trivial profunctors BOOL , indexed by a pair of +-> BOOLBOOLs selecting
whether the FLS->FLS and TRU->TRU heteromorphisms are present. FLS->TRU always is.
Constructors
| FF :: forall (tt :: BOOL). NonTrivialProfunctor '('TRU, tt) 'FLS 'FLS | |
| FT :: forall (ft :: (BOOL, BOOL)). NonTrivialProfunctor ft 'FLS 'TRU | |
| TT :: forall (ff :: BOOL). NonTrivialProfunctor '(ff, 'TRU) 'TRU 'TRU |
Instances
| (Ob ff, Ob tt) => DecidableProfunctor (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) Source Github # | |
Defined in Proarrow.Category.Enriched.Thin Methods decide :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => Decision (NonTrivialProfunctor '(ff, tt)) a b (Holds (NonTrivialProfunctor '(ff, tt)) a b) Source Github # toHolds :: forall (a :: BOOL) (b :: BOOL) r. NonTrivialProfunctor '(ff, tt) a b -> ((Holds (NonTrivialProfunctor '(ff, tt)) a b ~ 'TRU, Ob a, Ob b) => r) -> r Source Github # | |
| (Ob ff, Ob tt) => ThinProfunctor (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) Source Github # | |
Defined in Proarrow.Category.Enriched.Thin Methods arr :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b, HasArrow (NonTrivialProfunctor '(ff, tt)) a b) => NonTrivialProfunctor '(ff, tt) a b Source Github # withArr :: forall (a :: BOOL) (b :: BOOL) r. NonTrivialProfunctor '(ff, tt) a b -> ((HasArrow (NonTrivialProfunctor '(ff, tt)) a b, Ob a, Ob b) => r) -> r Source Github # | |
| Profunctor (NonTrivialProfunctor ft :: BOOL -> BOOL -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Bool Methods dimap :: forall (c :: BOOL) (a :: BOOL) (b :: BOOL) (d :: BOOL). (c ~> a) -> (b ~> d) -> NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft c d Source Github # lmap :: forall (c :: BOOL) (a :: BOOL) (b :: BOOL). (c ~> a) -> NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft c b Source Github # rmap :: forall (b :: BOOL) (d :: BOOL) (a :: BOOL). (b ~> d) -> NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft a d Source Github # (\\) :: forall (a :: BOOL) (b :: BOOL) r. ((Ob a, Ob b) => r) -> NonTrivialProfunctor ft a b -> r Source Github # | |
| Show (NonTrivialProfunctor ft a b) Source Github # | |
Defined in Proarrow.Category.Instance.Bool | |
| Eq (NonTrivialProfunctor ft a b) Source Github # | |
Defined in Proarrow.Category.Instance.Bool Methods (==) :: NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft a b -> Bool Github # (/=) :: NonTrivialProfunctor ft a b -> NonTrivialProfunctor ft a b -> Bool Github # | |
| type HasArrow (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) (a :: BOOL) (b :: BOOL) Source Github # | |
Defined in Proarrow.Category.Enriched.Thin | |
| type Holds (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) (a :: BOOL) (b :: BOOL) Source Github # | |
Defined in Proarrow.Category.Enriched.Thin type Holds (NonTrivialProfunctor '(ff, tt) :: BOOL -> BOOL -> Type) (a :: BOOL) (b :: BOOL) = NonTrivialHolds ff tt a b | |
type family NonTrivialHolds (ff :: BOOL) (tt :: BOOL) (a :: BOOL) (b :: BOOL) :: BOOL where ... Source Github #
Which heteromorphisms has.NonTrivialProfunctor '(ff, tt)
Equations
| NonTrivialHolds ff tt 'FLS 'FLS = ff | |
| NonTrivialHolds ff tt 'FLS 'TRU = 'TRU | |
| NonTrivialHolds ff tt 'TRU 'TRU = tt | |
| NonTrivialHolds ff tt 'TRU 'FLS = 'FLS |