[m-rev.] diff: fix debugger/interactive failures
Zoltan Somogyi
zs at cs.mu.OZ.AU
Fri Sep 27 13:00:44 AEST 2002
I wrote this diff with Fergus sitting next to me, so effectively it has
already been reviewed.
Zoltan.
Fix some test case failures.
browser/interactive_query.m:
Flush the output stream before invoking the compiler, to ensure that
the output appears in the desired order.
tests/debugger/interactive.{inp,exp}:
Test only the interactive commands of mdb. The other commands are well
exercised by the other test cases; duplicating them only leads to
double maintenance of the expected outputs.
cvs diff: Diffing .
cvs diff: Diffing bench
cvs diff: Diffing bench/progs
cvs diff: Diffing bench/progs/compress
cvs diff: Diffing bench/progs/icfp2000
cvs diff: Diffing bench/progs/icfp2001
cvs diff: Diffing bench/progs/nuc
cvs diff: Diffing bench/progs/ray
cvs diff: Diffing bench/progs/tree234
cvs diff: Diffing bindist
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/doc
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing boehm_gc/tests
cvs diff: Diffing browser
Index: browser/interactive_query.m
===================================================================
RCS file: /home/mercury1/repository/mercury/browser/interactive_query.m,v
retrieving revision 1.16
diff -u -r1.16 interactive_query.m
--- browser/interactive_query.m 1 Jul 2002 09:27:10 -0000 1.16
+++ browser/interactive_query.m 26 Sep 2002 06:03:56 -0000
@@ -90,6 +90,12 @@
query(QueryType, NewImports, Options,
MDB_Stdin, MDB_Stdout)
else
+ % The flush ensures that all output generated by the
+ % debugger up to this point appears in the output
+ % stream before any messages generated by the
+ % compilation of the query, which is done by another
+ % process.
+ io__flush_output(MDB_Stdout),
run_query(Options,
prog(QueryType, Imports, Term, VarSet)),
query(QueryType, Imports, Options,
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing deep_profiler
cvs diff: Diffing deep_profiler/notes
cvs diff: Diffing doc
cvs diff: Diffing extras
cvs diff: Diffing extras/aditi
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curs
cvs diff: Diffing extras/curs/samples
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/lex
cvs diff: Diffing extras/lex/samples
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/moose
cvs diff: Diffing extras/moose/samples
cvs diff: Diffing extras/morphine
cvs diff: Diffing extras/morphine/non-regression-tests
cvs diff: Diffing extras/morphine/scripts
cvs diff: Diffing extras/morphine/source
cvs diff: Diffing extras/odbc
cvs diff: Diffing extras/posix
cvs diff: Diffing extras/quickcheck
cvs diff: Diffing extras/quickcheck/tutes
cvs diff: Diffing extras/references
cvs diff: Diffing extras/references/samples
cvs diff: Diffing extras/references/tests
cvs diff: Diffing extras/stream
cvs diff: Diffing extras/trailed_update
cvs diff: Diffing extras/trailed_update/samples
cvs diff: Diffing extras/trailed_update/tests
cvs diff: Diffing extras/xml
cvs diff: Diffing extras/xml/samples
cvs diff: Diffing java
cvs diff: Diffing java/library
cvs diff: Diffing java/runtime
cvs diff: Diffing library
cvs diff: Diffing profiler
cvs diff: Diffing robdd
cvs diff: Diffing runtime
cvs diff: Diffing runtime/GETOPT
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/diff
cvs diff: Diffing samples/muz
cvs diff: Diffing samples/rot13
cvs diff: Diffing samples/solutions
cvs diff: Diffing samples/tests
cvs diff: Diffing samples/tests/c_interface
cvs diff: Diffing samples/tests/c_interface/c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/tests/c_interface/mercury_calls_c
cvs diff: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/tests/diff
cvs diff: Diffing samples/tests/muz
cvs diff: Diffing samples/tests/rot13
cvs diff: Diffing samples/tests/solutions
cvs diff: Diffing samples/tests/toplevel
cvs diff: Diffing scripts
cvs diff: Diffing tests
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
Index: tests/debugger/interactive.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/interactive.exp,v
retrieving revision 1.7
diff -u -r1.7 interactive.exp
--- tests/debugger/interactive.exp 12 Jun 2002 14:27:02 -0000 1.7
+++ tests/debugger/interactive.exp 26 Sep 2002 15:13:21 -0000
@@ -1,118 +1,19 @@
1: 1 1 CALL pred interactive:main/2-0 (cc_multi) interactive.m:21
mdb> echo on
Command echo enabled.
-mdb> print *
- DCG_0 (arg 1) state('<<c_pointer>>')
-mdb>
- 2: 2 2 CALL pred interactive:data/1-0 (det) interactive.m:40 (interactive.m:19)
-mdb> print *
-mdb: there are no live variables.
-mdb>
- 3: 2 2 EXIT pred interactive:data/1-0 (det) interactive.m:40 (interactive.m:19)
-mdb> print *
- HeadVar__1 [1, 2, 3, 4, 5]
-mdb>
- 4: 3 2 CALL pred interactive:queen/2-0 (nondet) interactive.m:42 (interactive.m:19)
-mdb> print *
- Data (arg 1) [1, 2, 3, 4, 5]
-mdb>
- 5: 4 3 CALL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:43)
-mdb> print *
- HeadVar__1 [1, 2, 3, 4, 5]
-mdb>
- 6: 4 3 SWTC pred interactive:qperm/2-0 (nondet) s2; interactive.m:47
-mdb> print *
- HeadVar__1 [1, 2, 3, 4, 5]
-mdb>
- 7: 5 4 CALL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
-mdb> print *
- HeadVar__2 [1, 2, 3, 4, 5]
-mdb>
- 8: 5 4 DISJ pred interactive:qdelete/3-0 (nondet) c2;d1; interactive.m:52
-mdb> print *
- HeadVar__2 [1, 2, 3, 4, 5]
-mdb> level 1
-Ancestor level set to 1:
- 1 pred interactive:qperm/2-0 (nondet) interactive.m:48
-mdb> print *
- HeadVar__1 [1, 2, 3, 4, 5]
-mdb> up 1
-Ancestor level set to 2:
- 2 pred interactive:queen/2-0 (nondet) interactive.m:43
-mdb> vars
- 1 Data (arg 1)
-mdb> print *
- Data (arg 1) [1, 2, 3, 4, 5]
-mdb>
- 9: 5 4 EXIT pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
-mdb> print HeadVar__1
- HeadVar__1 1
-mdb> print HeadVar__2
- HeadVar__2 [1, 2, 3, 4, 5]
-mdb> print HeadVar__3
- HeadVar__3 [2, 3, 4, 5]
-mdb>
- 10: 6 4 CALL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
-mdb> print *
- HeadVar__1 [2, 3, 4, 5]
-mdb>
- 11: 6 4 SWTC pred interactive:qperm/2-0 (nondet) s2; interactive.m:47
-mdb> print *
- HeadVar__1 [2, 3, 4, 5]
-mdb>
- 12: 7 5 CALL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
-mdb> print *
- HeadVar__2 [2, 3, 4, 5]
-mdb>
- 13: 7 5 DISJ pred interactive:qdelete/3-0 (nondet) c2;d1; interactive.m:52
-mdb> print *
- HeadVar__2 [2, 3, 4, 5]
-mdb>
- 14: 7 5 EXIT pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
-mdb> print *
- HeadVar__1 2
- HeadVar__2 [2, 3, 4, 5]
- HeadVar__3 [3, 4, 5]
-mdb>
- 15: 8 5 CALL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
-mdb> goto -a 20
- 16: 8 5 SWTC pred interactive:qperm/2-0 (nondet) s2; interactive.m:47
- 17: 9 6 CALL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 18: 9 6 DISJ pred interactive:qdelete/3-0 (nondet) c2;d1; interactive.m:52
- 19: 9 6 EXIT pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 20: 10 6 CALL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
-mdb> stack
- 0 4* pred interactive:qperm/2-0 (nondet) (interactive.m:46 and others)
- 4 pred interactive:queen/2-0 (nondet) (interactive.m:43)
- 5 pred interactive:main/2-0 (cc_multi) (interactive.m:19)
-mdb> stack -d
- 0 20 10 6 pred interactive:qperm/2-0 (nondet) (interactive.m:46) (empty)
- 1 15 8 5 pred interactive:qperm/2-0 (nondet) (interactive.m:50) s2;c2;
- 2 10 6 4 pred interactive:qperm/2-0 (nondet) (interactive.m:50) s2;c2;
- 3 5 4 3 pred interactive:qperm/2-0 (nondet) (interactive.m:50) s2;c2;
- 4 4 3 2 pred interactive:queen/2-0 (nondet) (interactive.m:43) c2;
- 5 1 1 1 pred interactive:main/2-0 (cc_multi) (interactive.m:19) ?;c2;q!;
-mdb> print *
- HeadVar__1 [4, 5]
-mdb> #
-Unknown command `#'. Give the command `help' for help.
-mdb> # Test interactive queries.
-Unknown command `#'. Give the command `help' for help.
-mdb> #
-Unknown command `#'. Give the command `help' for help.
mdb> query interactive list
-?- <stdin>:026: Inferred :- pred query((list:list(character)), (list:list(character))).
+?- append(X, Y, ['a', 'b', 'c']).
+<stdin>:026: Inferred :- pred query((list:list(character)), (list:list(character))).
<stdin>:026: Inferred :- mode query(out, out) is multi.
-append(X, Y, ['a', 'b', 'c']).
X = [], Y = ['a', 'b', 'c'], true ;
X = ['a'], Y = ['b', 'c'], true ;
X = ['a', 'b'], Y = ['c'], true ;
X = ['a', 'b', 'c'], Y = [], true ;
fail.
No (more) solutions.
-?- <stdin>:026: Inferred :- pred query((list:list(int))).
+?- qperm([1,2,3], List).
+<stdin>:026: Inferred :- pred query((list:list(int))).
<stdin>:026: Inferred :- mode query(out) is nondet.
-qperm([1,2,3], List).
List = [1, 2, 3], true ;
List = [1, 3, 2], true ;
List = [2, 1, 3], true ;
@@ -121,7 +22,8 @@
List = [3, 2, 1], true ;
fail.
No (more) solutions.
-?- <stdin>:012: In clause for predicate `mdb_query:run/2':
+?- qperm([1,2,3], List), List = [2 | _].
+<stdin>:012: In clause for predicate `mdb_query:run/2':
<stdin>:012: warning: variable `_2' occurs more than once in this scope.
<stdin>:014: In clause for predicate `mdb_query:run/2':
<stdin>:014: warning: variable `_2' occurs more than once in this scope.
@@ -135,12 +37,12 @@
<stdin>:001: warning: variable `_2' occurs more than once in this scope.
<stdin>:026: Inferred :- pred query((list:list(int)), (list:list(int))).
<stdin>:026: Inferred :- mode query(out, out) is nondet.
-qperm([1,2,3], List), List = [2 | _].
List = [2, 1, 3], _2 = [1, 3], true ;
List = [2, 3, 1], _2 = [3, 1], true ;
fail.
No (more) solutions.
-?- <stdin>:012: In clause for predicate `mdb_query:run/2':
+?- qperm([1,2,3], List), List = [4 | _].
+<stdin>:012: In clause for predicate `mdb_query:run/2':
<stdin>:012: warning: variable `_2' occurs more than once in this scope.
<stdin>:014: In clause for predicate `mdb_query:run/2':
<stdin>:014: warning: variable `_2' occurs more than once in this scope.
@@ -154,10 +56,10 @@
<stdin>:001: warning: variable `_2' occurs more than once in this scope.
<stdin>:026: Inferred :- pred query((list:list(int)), (list:list(int))).
<stdin>:026: Inferred :- mode query(out, out) is nondet.
-qperm([1,2,3], List), List = [4 | _].
fail.
No (more) solutions.
-?- <stdin>:001: In clause for predicate `mdb_query:query/1':
+?- qperm([1,2,"foo"], List).
+<stdin>:001: In clause for predicate `mdb_query:query/1':
<stdin>:001: in argument 1 of call to predicate `qperm/2':
<stdin>:001: in argument 2 of functor `[|]/2':
<stdin>:001: in argument 2 of functor `[|]/2':
@@ -167,9 +69,9 @@
<stdin>:001: argument has type `int',
<stdin>:001: constant `"foo"' has type `string'.
For more information, try recompiling with `-E'.
-qperm([1,2,"foo"], List).
Compilation error(s) occurred.
-?- <stdin>:026: Inferred :- pred query((list:list(int))).
+?- qperm(List, [1]).
+<stdin>:026: Inferred :- pred query((list:list(int))).
<stdin>:014: In clause for `run(di, uo)':
<stdin>:014: in call to predicate `mdb_query:query/1':
<stdin>:014: mode error: arguments `List'
@@ -181,20 +83,20 @@
<stdin>:026: mode error: variable `HeadVar__2' has instantiatedness `free',
<stdin>:026: expected instantiatedness was `ground'.
For more information, try recompiling with `-E'.
-qperm(List, [1]).
Compilation error(s) occurred.
?- quit.
mdb> cc_query interactive list
-?- <stdin>:017: Inferred :- pred query((list:list(character)), (list:list(character))).
+?- append(X, Y, ['a', 'b', 'c']).
+<stdin>:017: Inferred :- pred query((list:list(character)), (list:list(character))).
<stdin>:017: Inferred :- mode query(out, out) is multi.
-append(X, Y, ['a', 'b', 'c']).
X = [], Y = ['a', 'b', 'c'], true.
-?- <stdin>:017: Inferred :- pred query((list:list(int))).
+?- qperm([1,2,3], List).
+<stdin>:017: Inferred :- pred query((list:list(int))).
<stdin>:017: Inferred :- mode query(out) is nondet.
-qperm([1,2,3], List).
List = [1, 2, 3], true.
-?- <stdin>:011: In clause for predicate `mdb_query:run/2':
+?- qperm([1,2,3], List), List = [2 | _].
+<stdin>:011: In clause for predicate `mdb_query:run/2':
<stdin>:011: warning: variable `_2' occurs more than once in this scope.
<stdin>:012: In clause for predicate `mdb_query:run/2':
<stdin>:012: warning: variable `_2' occurs more than once in this scope.
@@ -204,9 +106,9 @@
<stdin>:001: warning: variable `_2' occurs more than once in this scope.
<stdin>:017: Inferred :- pred query((list:list(int)), (list:list(int))).
<stdin>:017: Inferred :- mode query(out, out) is nondet.
-qperm([1,2,3], List), List = [2 | _].
List = [2, 1, 3], _2 = [1, 3], true.
-?- <stdin>:011: In clause for predicate `mdb_query:run/2':
+?- qperm([1,2,3], List), List = [4 | _].
+<stdin>:011: In clause for predicate `mdb_query:run/2':
<stdin>:011: warning: variable `_2' occurs more than once in this scope.
<stdin>:012: In clause for predicate `mdb_query:run/2':
<stdin>:012: warning: variable `_2' occurs more than once in this scope.
@@ -216,7 +118,6 @@
<stdin>:001: warning: variable `_2' occurs more than once in this scope.
<stdin>:017: Inferred :- pred query((list:list(int)), (list:list(int))).
<stdin>:017: Inferred :- mode query(out, out) is nondet.
-qperm([1,2,3], List), List = [4 | _].
No solution.
?- quit.
@@ -233,58 +134,5 @@
No solution, as expected.
run <-- quit.
-mdb> retry
-This command is a no-op from this port.
-mdb> print *
- HeadVar__1 [4, 5]
-mdb> finish -a
- 21: 10 6 SWTC pred interactive:qperm/2-0 (nondet) s2; interactive.m:47
- 22: 11 7 CALL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 23: 11 7 DISJ pred interactive:qdelete/3-0 (nondet) c2;d1; interactive.m:52
- 24: 11 7 EXIT pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 25: 12 7 CALL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 26: 12 7 SWTC pred interactive:qperm/2-0 (nondet) s2; interactive.m:47
- 27: 13 8 CALL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 28: 13 8 DISJ pred interactive:qdelete/3-0 (nondet) c2;d1; interactive.m:52
- 29: 13 8 EXIT pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 30: 14 8 CALL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 31: 14 8 SWTC pred interactive:qperm/2-0 (nondet) s1; interactive.m:46
- 32: 14 8 EXIT pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 33: 12 7 EXIT pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 34: 10 6 EXIT pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
-mdb> register --quiet
-mdb> break print_list
- 0: + stop interface pred interactive:print_list/3-0 (det)
-mdb> break qdelete
- 1: + stop interface pred interactive:qdelete/3-0 (nondet)
-mdb> continue -a
- 35: 8 5 EXIT pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 36: 6 4 EXIT pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 37: 4 3 EXIT pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:43)
- 38: 15 3 CALL pred interactive:safe/1-0 (semidet) interactive.m:56 (interactive.m:44)
- 39: 15 3 SWTC pred interactive:safe/1-0 (semidet) s2; interactive.m:57
- 40: 16 4 CALL pred interactive:nodiag/3-0 (semidet) interactive.m:61 (interactive.m:58)
- 41: 16 4 SWTC pred interactive:nodiag/3-0 (semidet) s2; interactive.m:62
- 42: 16 4 THEN pred interactive:nodiag/3-0 (semidet) s2;c6;t; interactive.m:66
- 43: 16 4 FAIL pred interactive:nodiag/3-0 (semidet) interactive.m:61 (interactive.m:58)
- 44: 15 3 FAIL pred interactive:safe/1-0 (semidet) interactive.m:56 (interactive.m:44)
- 45: 4 3 REDO pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:43)
- 46: 6 4 REDO pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 47: 8 5 REDO pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 48: 10 6 REDO pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 49: 12 7 REDO pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 50: 14 8 REDO pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 51: 14 8 FAIL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
- 52: 13 8 REDO pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
-mdb> step -aS 5
- 53: 13 8 DISJ pred interactive:qdelete/3-0 (nondet) c2;d2; interactive.m:53
- 54: 17 9 CALL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:54)
- 55: 17 9 FAIL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:54)
- 56: 13 8 FAIL pred interactive:qdelete/3-0 (nondet) interactive.m:52 (interactive.m:48)
- 57: 12 7 FAIL pred interactive:qperm/2-0 (nondet) interactive.m:46 (interactive.m:50)
-mdb> disable 1
- 1: - stop interface pred interactive:qdelete/3-0 (nondet)
-mdb> continue -n
- 675: 141 2 CALL pred interactive:print_list/3-0 (det) interactive.m:83 (interactive.m:20)
mdb> continue -n -S
[1, 3, 5, 2, 4]
Index: tests/debugger/interactive.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/interactive.inp,v
retrieving revision 1.5
diff -u -r1.5 interactive.inp
--- tests/debugger/interactive.inp 29 Apr 2002 08:22:06 -0000 1.5
+++ tests/debugger/interactive.inp 26 Sep 2002 05:24:19 -0000
@@ -1,45 +1,3 @@
-print *
-
-print *
-
-print *
-
-print *
-
-print *
-
-print *
-
-print *
-
-print *
-level 1
-print *
-up 1
-vars
-print *
-
-print HeadVar__1
-print HeadVar__2
-print HeadVar__3
-
-print *
-
-print *
-
-print *
-
-print *
-
-print *
-
-goto -a 20
-stack
-stack -d
-print *
-#
-# Test interactive queries.
-#
query interactive list
append(X, Y, ['a', 'b', 'c']).
qperm([1,2,3], List).
@@ -61,14 +19,4 @@
if { qperm([1,2,3], List), List = [2 | _] } then print(List), nl else { true }.
if { qperm([1,2,3], List), List = [4 | _] } then print(List), nl else print("No solution, as expected."), io__nl.
quit.
-retry
-print *
-finish -a
-register --quiet
-break print_list
-break qdelete
-continue -a
-step -aS 5
-disable 1
-continue -n
continue -n -S
cvs diff: Diffing tests/debugger/declarative
cvs diff: Diffing tests/dppd
cvs diff: Diffing tests/general
cvs diff: Diffing tests/general/accumulator
cvs diff: Diffing tests/general/structure_reuse
cvs diff: Diffing tests/hard_coded
cvs diff: Diffing tests/hard_coded/exceptions
cvs diff: Diffing tests/hard_coded/purity
cvs diff: Diffing tests/hard_coded/sub-modules
cvs diff: Diffing tests/hard_coded/typeclasses
cvs diff: Diffing tests/invalid
cvs diff: Diffing tests/invalid/purity
cvs diff: Diffing tests/misc_tests
cvs diff: Diffing tests/recompilation
cvs diff: Diffing tests/tabling
cvs diff: Diffing tests/term
cvs diff: Diffing tests/valid
cvs diff: Diffing tests/warnings
cvs diff: Diffing tools
cvs diff: Diffing trace
cvs diff: Diffing util
cvs diff: Diffing vim
cvs diff: Diffing vim/after
cvs diff: Diffing vim/ftplugin
cvs diff: Diffing vim/syntax
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list