From 9ef14b53ac3a6ed5e26ce8817f2b8927cee31825 Mon Sep 17 00:00:00 2001 From: timofey Date: Tue, 25 Apr 2023 17:39:25 +0000 Subject: [PATCH] fix subset check --- src/flow/traversible.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/flow/traversible.rs b/src/flow/traversible.rs index b7fd998..abb5b1e 100644 --- a/src/flow/traversible.rs +++ b/src/flow/traversible.rs @@ -1,5 +1,7 @@ //! Traversible binary trees. +// pub mod unbalanced; + use std::rc::Rc; use crate::func::*; @@ -50,24 +52,24 @@ pub type Split<'a, T, A, D> = ( Rc, ); -pub trait TraversibleBinaryNode<'a, T: Monad, A, D: 'a + PartialEq>: 'a { +pub trait TraversibleBinaryNode<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>: 'a { fn split(&self) -> Split<'a, T, A, D>; fn to_tree(self: Rc) -> Rc>; } -pub trait TraversibleBinaryReference<'a, T: Monad, A, D: 'a + PartialEq>: 'a { +pub trait TraversibleBinaryReference<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>: 'a { fn resolve(&self) -> ::F<'a, Rc>>; /// This should be enough to compare reference for equality. fn data(&self) -> D; } -pub trait TraversibleBinaryTree<'a, T: Monad, A, D: 'a + PartialEq>: 'a { +pub trait TraversibleBinaryTree<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>: 'a { fn refer(&self) -> Option>>; } -pub fn n_contains<'a, T: Monad, A, D: 'a + PartialEq>( +pub fn n_contains<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>( comparator: &'a dyn Comparator, n_set: Rc>, key: Rc, @@ -80,7 +82,7 @@ pub fn n_contains<'a, T: Monad, A, D: 'a + PartialEq>( } } -pub fn r_contains<'a, T: Monad, A, D: 'a + PartialEq>( +pub fn r_contains<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>( comparator: &'a dyn Comparator, r_set: Rc>, key: Rc, @@ -88,7 +90,7 @@ pub fn r_contains<'a, T: Monad, A, D: 'a + PartialEq>( T::bind(r_set.resolve(), |n_set| n_contains(comparator, n_set, key)) } -pub fn t_contains<'a, T: Monad, A, D: 'a + PartialEq>( +pub fn t_contains<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>( comparator: &'a dyn Comparator, t_set: Rc>, key: Rc, @@ -99,7 +101,7 @@ pub fn t_contains<'a, T: Monad, A, D: 'a + PartialEq>( } } -pub fn n_subset_of_n<'a, T: Monad, A, D: 'a + PartialEq>( +pub fn n_subset_of_n<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>( comparator: &'a dyn Comparator, n_subset: Rc>, n_superset: Rc>, @@ -128,7 +130,7 @@ pub fn n_subset_of_n<'a, T: Monad, A, D: 'a + PartialEq>( t_subset_of_t( comparator, t_subr, - n_subset.to_tree(), + n_superset.to_tree(), Some(k_sub.clone()), k_r, ), @@ -147,7 +149,7 @@ pub fn n_subset_of_n<'a, T: Monad, A, D: 'a + PartialEq>( t_subset_of_t( comparator, t_subl, - n_subset.to_tree(), + n_superset.to_tree(), k_l, Some(k_sub.clone()), ), @@ -157,7 +159,7 @@ pub fn n_subset_of_n<'a, T: Monad, A, D: 'a + PartialEq>( } } -pub fn r_subset_of_r<'a, T: Monad, A, D: 'a + PartialEq>( +pub fn r_subset_of_r<'a, T: 'a + Monad, A: 'a, D: 'a + PartialEq>( comparator: &'a dyn Comparator, r_subset: Rc>, r_superset: Rc>,