From: Markus Triska Date: Tue, 1 Mar 2022 22:52:51 +0000 (+0100) Subject: ADDED: "a" to enumerate all solutions X-Git-Tag: v0.9.0^2~7^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=102adb3544693b8042e3806fc9ab418b60d46853;p=scryer-prolog.git ADDED: "a" to enumerate all solutions Example: ?- member(X, "hello"). %@ X = h <-- press "a" %@ ; X = e %@ ; X = l %@ ; X = l %@ ; X = o %@ ; false. --- diff --git a/src/toplevel.pl b/src/toplevel.pl index c72089e9..72e59886 100644 --- a/src/toplevel.pl +++ b/src/toplevel.pl @@ -173,6 +173,7 @@ instruction_match(Term, VarList) :- submit_query_and_print_results_(Term, VarList) :- '$get_b_value'(B), + bb_put('$report_all', false), '$call'(Term), write_eqs_and_read_input(B, VarList), !. @@ -313,7 +314,10 @@ write_eqs_and_read_input(B, VarList) :- ). read_input(ThreadedGoals, NewVarList) :- - get_single_char(C), + ( bb_get('$report_all', true) -> + C = n + ; get_single_char(C) + ), ( C = w -> nl, write(' '), @@ -331,6 +335,9 @@ read_input(ThreadedGoals, NewVarList) :- read_input(ThreadedGoals, NewVarList) ; member(C, ['\n', .]) -> nl, write('; ... .'), nl + ; C = a -> + bb_put('$report_all', true), + nl, write('; '), false ; read_input(ThreadedGoals, NewVarList) ). @@ -338,6 +345,7 @@ help_message :- nl, nl, write('SPACE, "n" or ";": next solution, if any\n'), write('RETURN or ".": stop enumeration\n'), + write('"a": enumerate all solutions\n'), write('"h": display this help message\n'), write('"w": write terms without depth limit\n'), write('"p": print terms with depth limit\n\n').