diff --git a/src/iterators.rs b/src/iterators.rs index 62054b04..de091d4a 100644 --- a/src/iterators.rs +++ b/src/iterators.rs @@ -530,3 +530,38 @@ impl<'a> Iterator for ChunkedIterator<'a> { self.iter.next().map(|term| self.take_chunk(term)) } } + +/* +================================================================================ + +This is a disjunction compilation experiment attempting to +adapt the paper "Compiling Large Disjunctions" to Scryer Prolog. + +================================================================================ +*/ + +enum VarInfo { + Perm, + Temp, + Void +} + +pub struct ChunkInfo { + chunk_num: usize, + vars: Vec<(Rc, VarInfo)>, +} + +pub struct BranchInfo { + branch_num: usize, // TODO: Rational?? or own type? + delta: usize, // TODO: Rational?? + chunks: Vec, +} + +pub struct ControlIterator<'a> { + current_branch_num: usize, // TODO: same as above + state_stack: Vec>, + branch_map: IndexMap, Vec>, +} + +impl ControlIterator { +}