diff --git a/src/func/classes/option.rs b/src/func/classes/option.rs index 19804a0..b37775c 100644 --- a/src/func/classes/option.rs +++ b/src/func/classes/option.rs @@ -21,8 +21,19 @@ impl Functor for OptionClass { fa.map(f) } - fn replace<'a, A: 'a, B: 'a>(fa: Self::F<'a, A>, b: B) -> Self::F<'a, B> { - fa.map(|_| b) + fn replace<'a, A: 'a, B: 'a>(fa: Self::F<'a, A>, b: B) -> Self::F<'a, B> + where + Self: 'a, + { + fa?; + Self::pure(b) + } + + fn void<'a, A: 'a>(fa: Self::F<'a, A>) -> Self::F<'a, ()> + where + Self: 'a, { + fa?; + Self::pure(()) } } diff --git a/src/func/classes/result.rs b/src/func/classes/result.rs index ef3caa1..5509e10 100644 --- a/src/func/classes/result.rs +++ b/src/func/classes/result.rs @@ -28,7 +28,15 @@ impl Functor for ResultClass { where Self: 'a, { - fa.map(|_| b) + fa?; + Self::pure(b) + } + + fn void<'a, A: 'a>(fa: Self::F<'a, A>) -> Self::F<'a, ()> + where + Self: 'a, { + fa?; + Self::pure(()) } }