KV
Size: a a a
KV
KV
ЗП
dapKV
liftA2 (/\) `on` toList
KV
ЗП
KV
KV
KV
KV
KV
ЗП
zipCata :: forall ta fa tb fb c. Recursive ta fa => Recursive tb fb => ((ta -> tb -> c) -> fa ta -> fb tb -> c) -> ta -> tb -> c
zipCata phi x y = phi (zipCata phi) (project x) (project y)
DaylowerDay :: forall t g f a. Recursive t g => Algebra (Day f g) a -> Algebra f (t -> a)
lowerDay phi fta t = phi (day fta (project t) (uncurry ($)))
zipCata :: forall f g t a u. Recursive t f => Recursive u g => Algebra (Day f g) a -> t -> u -> a
zipCata = cata <<< lowerDay
KV
ЗП
ЗП
eqList' :: forall a. Eq a => List a -> List a -> Boolean
eqList' = zipCata alg
where
alg :: (List a -> List a -> Boolean) -> ListF a (List a) -> ListF a (List a) -> Boolean
alg _ NilF NilF = true
alg f (ConsF x xs) (ConsF y ys) = (x == y) && (f xs ys)
alg _ _ _ = false
ЗП
KV