Press `SPACE` to show further answers, if any exist. Press `RETURN`
or `.` to abort the search and return to the
-toplevel prompt. Press `f` to see the next 5 answers, and
-`a` to see all answers. Press `h` to show a help message.
+toplevel prompt. Press `f` to see up to the next multiple of
+5 answers, and `a` to see all answers. Press `h` to show a help
+message.
Use `TAB` to complete atoms and predicate names in queries. For
instance, after consulting the program above, typing `decl` followed
halt.
repl :-
- bb_put('$first_answer', true),
catch(read_and_match, E, print_exception(E)),
false. %% this is for GC, until we get actual GC.
repl :-
write_eqs_and_read_input(B, VarList),
!.
submit_query_and_print_results_(_, _) :-
- ( bb_get('$first_answer', true) ->
+ ( bb_get('$answer_count', 0) ->
write(' ')
; true
),
% in the first argument, which is done by call/N
; expand_goal(Term0, user, Term)
),
- bb_put('$first_answer', true),
+ bb_put('$answer_count', 0),
submit_query_and_print_results_(Term, VarList).
append([AttrGoalVars | EquationVars], Vars1),
term_variables(Vars1, Vars2), % deduplicate vars of Vars1 but preserve their order.
charsio:extend_var_list(Vars2, VarList, NewVarList0, fabricated),
- ( bb_get('$first_answer', true) ->
- write(' '),
- bb_put('$first_answer', false)
+ bb_get('$answer_count', Count),
+ ( Count =:= 0 ->
+ write(' ')
; true
),
+ Count1 is Count + 1,
+ bb_put('$answer_count', Count1),
( B0 == B ->
( Goals == [] ->
write('true.'), nl
bb_put('$report_all', true),
nl, write('; '), false
; C = f ->
- bb_put('$report_n_more', 5),
+ bb_get('$answer_count', Count),
+ More is 5 - Count mod 5,
+ bb_put('$report_n_more', More),
nl, write('; '), false
; read_input(ThreadedGoals, NewVarList)
).