tuple_can_be_expressed_via_la2
All checks were successful
buildbot/cargo fmt (1.72) Build done.
buildbot/cargo clippy (1.65) Build done.
buildbot/cargo doc (1.72) Build done.
buildbot/cargo clippy (1.72) Build done.
buildbot/cargo test (1.65) Build done.

This commit is contained in:
AF 2023-10-15 14:33:49 +00:00
parent 57cbffe014
commit 30497ac69c
2 changed files with 21 additions and 0 deletions

View File

@ -52,6 +52,11 @@ pub fn applicative_follows_laws<'a, T: Applicative<'a> + FunctorTestSuite<'a>>()
res += discard_can_be_expressed_via_seq_or_la2::<T, _, _>(|| pa(2), || pb(2));
})
});
T::sample(|pa| {
T::sample(|pb| {
res += tuple_can_be_expressed_via_la2::<T, _, _>(|| pa(2), || pb(2));
})
});
res
}

View File

@ -331,3 +331,19 @@ pub fn void_can_be_exressed_via_replace<
T::replace(fa0(), ()),
)
}
pub fn tuple_can_be_expressed_via_la2<
'a,
T: Applicative<'a> + Eqr<'a>,
A: 'a + Send + Debug + PartialEq,
B: 'a + Send + Debug + PartialEq,
>(
fa0: impl Fn() -> T::F<A>,
fb0: impl Fn() -> T::F<B>,
) -> R {
T::eqr(
"tuple via la2",
T::tuple((fa0(), fb0())),
T::la2(fa0(), fb0(), |a, b| (a, b)),
)
}