use monadic::{stt_mdo, state_trans::{StateT, get, put}};
use num::Integer;
type St = i32;
fn main() {
let bloc = stt_mdo!{
x <- lift_iter 5..9 ;
guard x.is_odd();
y <- get() ;
_ <- put( 1) ;
z <- get() ;
let v = x +1 ;
pure (v, y, z)
};
let res = bloc.initial_state( 0);
println!("result: {:?}", res);
}