From f8d8a77b1fa8ddf45fa762e35d6d347a1361a868 Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 15 Oct 2023 14:26:40 +0000 Subject: [PATCH] void_can_be_exressed_via_replace --- src/func/test_suite.rs | 3 +++ src/func/tests.rs | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/func/test_suite.rs b/src/func/test_suite.rs index 93eaeee..86d4f08 100644 --- a/src/func/test_suite.rs +++ b/src/func/test_suite.rs @@ -75,5 +75,8 @@ pub fn monad_follows_laws<'a, T: Monad<'a> + FunctorTestSuite<'a>>() -> R { T::sample(|pa| { res += fmap_can_be_expressed_via_bind::(|x| x + 3, || pa(2)); }); + T::sample(|pa| { + res += void_can_be_exressed_via_replace::(|| pa(2)); + }); res } diff --git a/src/func/tests.rs b/src/func/tests.rs index 185dfac..66d57ba 100644 --- a/src/func/tests.rs +++ b/src/func/tests.rs @@ -317,3 +317,17 @@ pub fn fmap_can_be_expressed_via_bind< T::bind(fa0(), move |a| T::pure(f(a))), ) } + +pub fn void_can_be_exressed_via_replace< + 'a, + T: Monad<'a> + Eqr<'a>, + A: 'a + Send + Debug + PartialEq, +>( + fa0: impl Fn() -> T::F, +) -> R { + T::eqr( + "void via bind: void x = () <$ x", + T::void(fa0()), + T::replace(fa0(), ()), + ) +}