count in trace example
All checks were successful
buildbot/cargo clippy (1.65) Build done.
buildbot/cargo fmt (1.72) Build done.
buildbot/cargo test (1.65) Build done.
buildbot/cargo clippy (1.72) Build done.
buildbot/cargo doc (1.72) Build done.

This commit is contained in:
AF 2023-10-15 11:32:57 +00:00
parent 988764ab07
commit 8818d0c53e

View File

@ -4,15 +4,17 @@ use radn::{
flow::{comparator::*, traversible::algorithms::subset::*},
func::*,
mrds::trees::unbalanced::*,
rstd::tracing::*,
rstd::{counting::CountedInstance, tracing::*},
};
use rand::{Rng, SeedableRng};
type TracedMonad = instances::composition::CompositionInstance<
type Inner = instances::composition::CompositionInstance<
TracedInstance,
instances::result::ResultInstance<()>,
>;
type Outer = instances::composition::CompositionInstance<CountedInstance, Inner>;
trait FromSlice<R> {
type Tree;
type A;
@ -44,10 +46,11 @@ impl<'a, T: Monad<'a>, A: 'a + Send + Sync + Clone, R: 'a + rand::Rng> FromSlice
}
fn main() {
let ctr: Arc<UnbalancedConstructor<TracedMonad, _>> =
UnbalancedConstructor::rc(Box::new(|node| {
Box::new(move || TracedMonad::pure(node.clone()).after_resolution())
}));
let ctr: Arc<UnbalancedConstructor<Outer, _>> = UnbalancedConstructor::rc(Box::new(|node| {
Box::new(move || {
CountedInstance::pure(Inner::pure(node.clone()).after_resolution()).after_resolution()
})
}));
let mut rng = rand::rngs::StdRng::seed_from_u64(426);
let big: Vec<i32> = (0..(rng.gen_range(1000..2000))).collect();
let key = big[rng.gen_range(0..big.len())];
@ -65,6 +68,7 @@ fn main() {
None,
None,
);
assert!(traced.value.is_ok());
println!("{:?}", traced.render().to_vec());
assert!(traced.value.value.is_ok());
println!("{:?}", traced.value.render().to_vec());
println!("{}", traced.count());
}