From 46317c3a39a381af89ae3906637244212d800272 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Thu, 1 Sep 2022 17:03:00 -0600 Subject: [PATCH] begin adapting the techniques of "Compiling Large Disjunctions" --- src/iterators.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) 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 { +} -- 2.54.0