TZ
ArrowApply a => a b c
(так как у стрелки де-факто есть инстанс профунктора)Size: a a a
TZ
ArrowApply a => a b c
(так как у стрелки де-факто есть инстанс профунктора)ЗП
ppure :: forall p a. Category p => Profunctor p => p a a
ppure = arr identity
pap :: forall p a b x. Category p => Strong p => p x (a -> b) -> p x a -> p x b
pap f x = dimap dup (uncurry identity) (f *** x)
dup :: forall a. a -> Tuple a a
dup = join Tuple
TZ
ArrowApply s => s (s a r) r
TZ
TZ
pure x = ArrowMonad (arr (const x))
ArrowApply s => s (s a r) r
TZ
dup x = (x,x)
?ЗП
dup x = (x,x)
?ЗП
pap
plift2
:: forall p a b b1 b2
. Strong p
=> Category p
=> Profunctor p
=> (b1 -> b2 -> b)
-> p a b1
-> p a b2
-> p a b
plift2 f x y = dimap dup (uncurry f) $ x *** y
pap1 :: forall p a b x. Category p => Strong p => p x (a -> b) -> p x a -> p x b
pap1 = plift2 ($)
plift2'
:: forall p f a b b1 b2
. Representable p f
=> Apply f
=> (b1 -> b2 -> b)
-> p a b1
-> p a b2
-> p a b
plift2' f x y = tabulate \s -> lift2 f (sieve x s) (sieve y s)
pap2 :: forall p f a b x. Representable p f => Apply f => p x (a -> b) -> p x a -> p x b
pap2 = plift2'($)
ЗП
YS
AV
YS
YS
к
YS
ЗП
YS
MK