:- non_counted_backtracking '$iterate_find_all'/4.
'$iterate_find_all'(Template, Goal, _, LhOffset) :-
- call(Goal),
+ '$call'(Goal),
'$copy_to_lh'(LhOffset, Template),
'$fail'.
'$iterate_find_all'(_, _, Solutions, LhOffset) :-
use crate::arena::*;
use crate::atom_table::*;
use crate::types::*;
-
use crate::clause_types::*;
use crate::forms::*;
use crate::heap_iter::*;
self.heap.push(atom_as_cell!(name, arity));
for i in 0..arity {
- self.heap.push(heap_loc_as_cell!(h + i + 1));
- }
+ self.heap.push(heap_loc_as_cell!(h + i + 1));
+ }
- str_loc_as_cell!(h)
- };
+ if arity == 0 {
+ heap_loc_as_cell!(h)
+ } else {
+ str_loc_as_cell!(h)
+ }
+ };
(self.bind_fn)(self, r, f_a);
}