use crate::func::*;
pub type CountedInstance = instances::effect::EffectInstance<usize>;
impl instances::effect::Effect for usize {
fn e_pure() -> Self {
0
}
fn e_parallel(el: Self, er: Self) -> Self {
std::cmp::max(el, er)
}
fn e_after(self, effect: Self) -> Self {
self + effect
}
}
pub type Counted<A> = instances::effect::WithEffect<A, usize>;
impl<A> Counted<A> {
pub fn after_resolution(self) -> Self {
Counted {
value: self.value,
effect: self.effect + 1,
}
}
pub fn count(&self) -> usize {
self.effect
}
}