| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Optic.Day
Description
A third way to combine two flavors, alongside ProdRes and
SumRes: via the Day convolution, which -- unlike those two -- keeps both
witnesses in the *same* ambient categories j/k (it needs Monoidal structure there to
split objects across the two witnesses, rather than pairing/summing two independent
categories).
Documentation
class DayRes (w1 :: FLAVOR j k) (w2 :: FLAVOR j k) (p :: k +-> k) (q :: j +-> j) Source Github #
Instances
| (CategoryOf k, CategoryOf j) => DayRes (w1 :: FLAVOR j k) (w2 :: FLAVOR j k) (Id :: k -> k -> Type) (Id :: j -> j -> Type) Source Github # | |
Defined in Proarrow.Optic.Day | |
| (w1 p1 q1, w2 p2 q2) => DayRes (w1 :: (j1 +-> j1) -> (j2 +-> j2) -> Constraint) (w2 :: (j1 +-> j1) -> (j2 +-> j2) -> Constraint) (Day p1 p2 :: j1 -> j1 -> Type) (Day q1 q2 :: j2 -> j2 -> Type) Source Github # | |
Defined in Proarrow.Optic.Day | |
| (DayRes w1 w2 f f', DayRes w1 w2 g g') => DayRes (w1 :: FLAVOR i1 i2) (w2 :: FLAVOR i1 i2) (f :.: g :: i2 -> i2 -> Type) (g' :.: f' :: i1 -> i1 -> Type) Source Github # | |
Defined in Proarrow.Optic.Day | |
dayOptic :: forall {j} {k} (w1 :: FLAVOR j k) (w2 :: FLAVOR j k) (s1 :: k) (t1 :: j) (a1 :: k) (b1 :: j) (s2 :: k) (t2 :: j) (a2 :: k) (b2 :: j). (Monoidal j, Monoidal k, CompactFlavor w1, CompactFlavor w2) => Optic (Prostrong w1) s1 t1 a1 b1 -> Optic (Prostrong w2) s2 t2 a2 b2 -> Optic (Prostrong (DayRes w1 w2)) (s1 ** s2) (t1 ** t2) (a1 ** a2) (b1 ** b2) Source Github #