metatrait 0.0.0-alpha.0

RPITIT Monads
Documentation
use super::base::BaseInstance;

pub type Options = BaseInstance<crate::base::instances::option::Options>;

#[cfg(test)]
mod test {
    use crate::{
        cat::functor::*,
        traits::{base::BaseExt, is::IsExt},
    };

    use super::*;

    #[test]
    fn test() {
        let x = Options::pure(0);
        let x = Options::map(x, |x| x + 1);
        let x = Options::map(x, |x| x + 1);
        let x = Options::map(x, |x| x + 1);
        let x = Options::map(x, |x| x + 1);
        let x = Options::map(x, |x| x + 1);
        let x = x.into_base();
        let x = x.unwrap();
        let x = x.into_that();
        assert_eq!(x, 5);
    }
}