debugging msg

This commit is contained in:
Vítor Santos Costa 2015-04-13 13:35:37 +01:00
parent ecd980c491
commit 3c73a2e6d6

View File

@ -30,7 +30,7 @@
source_file/1, source_file/1,
source_file/2, source_file/2,
source_file_property/2, source_file_property/2,
use_module/3], use_module/3],
['$add_multifile'/3, ['$add_multifile'/3,
'$csult'/2, '$csult'/2,
'$do_startup_reconsult'/1, '$do_startup_reconsult'/1,
@ -65,7 +65,7 @@
:- use_system_module( '$_preds', ['$current_predicate'/4]). :- use_system_module( '$_preds', ['$current_predicate'/4]).
%% @{ %% @{
/** /**
@defgroup YAPConsulting Loading files into YAP @defgroup YAPConsulting Loading files into YAP
@ -83,7 +83,7 @@ files and to set-up the Prolog environment. We discuss
@defgroup YAPReadFiles The Predicates that Read Source Files @defgroup YAPReadFiles The Predicates that Read Source Files
@ingroup YAPConsulting @ingroup YAPConsulting
*/ */
@ -97,7 +97,7 @@ following flags:
+ consult(+ _Mode_) + consult(+ _Mode_)
This extension controls the type of file to load. If _Mode_ is: This extension controls the type of file to load. If _Mode_ is:
`consult`, clauses are added to the data-base, unless from the same file; `consult`, clauses are added to the data-base, unless from the same file;
`reconsult`, clauses are recompiled, `reconsult`, clauses are recompiled,
`db`, these are facts that need to be added to the data-base, `db`, these are facts that need to be added to the data-base,
@ -132,7 +132,7 @@ following flags:
Character encoding used in consulting files. Please (see Character encoding used in consulting files. Please (see
[Encoding](@ref Encoding)) for supported encodings. [Encoding](@ref Encoding)) for supported encodings.
+ expand(+ _Bool_) + expand(+ _Bool_)
If `true`, run the filenames through expand_file_name/2 and load If `true`, run the filenames through expand_file_name/2 and load
the returned files. Default is false, except for consult/1 which the returned files. Default is false, except for consult/1 which
@ -147,26 +147,26 @@ following flags:
before. before.
+ imports(+ _ListOrAll_) + imports(+ _ListOrAll_)
If `all` and the file is a module file, import all public If `all` and the file is a module file, import all public
predicates. Otherwise import only the named predicates. Each predicates. Otherwise import only the named predicates. Each
predicate is referred to as `\<name\>/\<arity\>`. This option has predicate is referred to as `\<name\>/\<arity\>`. This option has
no effect if the file is not a module file. no effect if the file is not a module file.
+ must_be_module(+ _Bool_) + must_be_module(+ _Bool_)
If true, raise an error if the file is not a module file. Used by If true, raise an error if the file is not a module file. Used by
` use_module/1 and use_module/2. ` use_module/1 and use_module/2.
+ qcompile(+ _Value_) + qcompile(+ _Value_)
SWI-Prolog flag that controls whether loaded files should be also SWI-Prolog flag that controls whether loaded files should be also
compiled into `qly` files. The default value is obtained from the flag compiled into `qly` files. The default value is obtained from the flag
`qcompile`: `qcompile`:
`never`, no `qly` file is generated unless the user calls `never`, no `qly` file is generated unless the user calls
qsave_file/1 and friends, or sets the qcompile option in qsave_file/1 and friends, or sets the qcompile option in
load_files/2; load_files/2;
`auto`, all files are qcompiled. `auto`, all files are qcompiled.
@ -176,7 +176,7 @@ following flags:
+ autoload(+ _Autoload_) + autoload(+ _Autoload_)
SWI-compatible option where if _Autoload_ is `true` undefined SWI-compatible option where if _Autoload_ is `true` undefined
predicates are loaded on first call. predicates are loaded on first call.
@ -313,7 +313,7 @@ load_files(Files,Opts) :-
Opt =.. [Op, Val], Opt =.. [Op, Val],
ground(Val), ground(Val),
'$lf_opt'(Op, TOpt, Val), '$lf_opt'(Op, TOpt, Val),
'$process_lf_opt'(Op, Val,Call), !, '$process_lf_opt'(Op, Val,Call), !,
'$process_lf_opts'(Opts, TOpt, Files, Call). '$process_lf_opts'(Opts, TOpt, Files, Call).
'$process_lf_opts'([Opt|_],_,_,Call) :- '$process_lf_opts'([Opt|_],_,_,Call) :-
'$do_error'(domain_error(unimplemented_option,Opt),Call). '$do_error'(domain_error(unimplemented_option,Opt),Call).
@ -394,7 +394,7 @@ load_files(Files,Opts) :-
'$lf_default_opts'(I1, LastOpt, TOpts). '$lf_default_opts'(I1, LastOpt, TOpts).
'$check_use_module'(use_module(_), use_module(_)) :- !. '$check_use_module'(use_module(_), use_module(_)) :- !.
'$check_use_module'(use_module(_,_), use_module(_)) :- !. '$check_use_module'(use_module(_,_), use_module(_)) :- !.
'$check_use_module'(use_module(M,_,_), use_module(M)) :- !. '$check_use_module'(use_module(M,_,_), use_module(M)) :- !.
@ -440,7 +440,7 @@ load_files(Files,Opts) :-
( var(If) -> If = true ; true ), ( var(If) -> If = true ; true ),
'$lf_opt'(imports, TOpts, Imports), '$lf_opt'(imports, TOpts, Imports),
'$start_lf'(If, Mod, Stream, TOpts, File, Reexport, Imports), '$start_lf'(If, Mod, Stream, TOpts, File, Reexport, Imports),
close(Stream). close(Stream).
'$lf'(X, _, Call, _) :- '$lf'(X, _, Call, _) :-
'$do_error'(permission_error(input,stream,X),Call). '$do_error'(permission_error(input,stream,X),Call).
@ -464,7 +464,7 @@ load_files(Files,Opts) :-
( '$q_header'( Stream, Type ), ( '$q_header'( Stream, Type ),
Type == file Type == file
-> ->
time_file64(F, T0F), time_file64(F, T0F),
stream_property(PlStream, file_name(FilePl)), stream_property(PlStream, file_name(FilePl)),
time_file64(FilePl, T0Fl), time_file64(FilePl, T0Fl),
T0F >= T0Fl, T0F >= T0Fl,
@ -605,7 +605,7 @@ exo_files(Fs) :-
Load a database of ground facts. All facts must take up the same amount of storage, so that Load a database of ground facts. All facts must take up the same amount of storage, so that
a fact $I$ can be accessed at position _P[I-1]_. This representation thus stores the facts as a huge continuous array, the so-called mega clause. a fact $I$ can be accessed at position _P[I-1]_. This representation thus stores the facts as a huge continuous array, the so-called mega clause.
See \cite for a motivation for this technique. YAP implements this See \cite for a motivation for this technique. YAP implements this
optimization by default whenever it loads a large number of facts (see optimization by default whenever it loads a large number of facts (see
@ -616,8 +616,8 @@ often new atoms will be stored in the Symbol Table, see
LookupAtom(const char *atom). The main advantage of load_db/1 is LookupAtom(const char *atom). The main advantage of load_db/1 is
that it allocates the necessary memory only once. Just doing this that it allocates the necessary memory only once. Just doing this
may halve total memory usage in large in-memory database-oriented applications. may halve total memory usage in large in-memory database-oriented applications.
@note Implementation @note Implementation
YAP implements load_db/1 as a two-step non-optimised process. First, YAP implements load_db/1 as a two-step non-optimised process. First,
it counts the nmuber of facts and checks their size. Second, it it counts the nmuber of facts and checks their size. Second, it
@ -625,7 +625,7 @@ YAP implements load_db/1 as a two-step non-optimised process. First,
implemented by dbload_get_space(), and the second by implemented by dbload_get_space(), and the second by
dbload_add_facts(). dbload_add_facts().
db_files/1 itself is just a call to load_files/2. db_files/1 itself is just a call to load_files/2.
*/ */
db_files(Fs) :- db_files(Fs) :-
'$load_files'(Fs, [consult(db), if(not_loaded)], exo_files(Fs)). '$load_files'(Fs, [consult(db), if(not_loaded)], exo_files(Fs)).
@ -666,7 +666,7 @@ db_files(Fs) :-
'$set_current_loop_stream'(OldStream, Stream), '$set_current_loop_stream'(OldStream, Stream),
'$swi_current_prolog_flag'(generate_debug_info, GenerateDebug), '$swi_current_prolog_flag'(generate_debug_info, GenerateDebug),
'$lf_opt'(compilation_mode, TOpts, CompMode), '$lf_opt'(compilation_mode, TOpts, CompMode),
'$comp_mode'(OldCompMode, CompMode), '$comp_mode'(OldCompMode, CompMode),
recorda('$initialisation','$',_), recorda('$initialisation','$',_),
( Reconsult \== consult -> ( Reconsult \== consult ->
'$start_reconsulting'(File), '$start_reconsulting'(File),
@ -696,7 +696,7 @@ db_files(Fs) :-
print_message(Verbosity, loaded(EndMsg, File, Mod, T, H)), print_message(Verbosity, loaded(EndMsg, File, Mod, T, H)),
'$end_consult', '$end_consult',
'$q_do_save_file'(File, UserFile, TOpts ), '$q_do_save_file'(File, UserFile, TOpts ),
( (
Reconsult = reconsult -> Reconsult = reconsult ->
'$clear_reconsulting' '$clear_reconsulting'
; ;
@ -720,7 +720,7 @@ db_files(Fs) :-
!. !.
'$q_do_save_file'(File, UserF, TOpts ) :- '$q_do_save_file'(File, UserF, TOpts ) :-
'$lf_opt'(qcompile, TOpts, QComp), '$lf_opt'(qcompile, TOpts, QComp),
'$lf_opt'('$source_pos', TOpts, Pos), '$lf_opt'('$source_pos', TOpts, Pos),
( QComp == auto ; QComp == large, Pos > 100*1024), ( QComp == auto ; QComp == large, Pos > 100*1024),
'$absolute_file_name'(UserF,[file_type(qly),solutions(first),expand(true)],F,load_files(File)), '$absolute_file_name'(UserF,[file_type(qly),solutions(first),expand(true)],F,load_files(File)),
@ -785,7 +785,7 @@ db_files(Fs) :-
recorded('$blocking_code',_,R), recorded('$blocking_code',_,R),
erase(R), erase(R),
fail. fail.
% system goals must be performed first % system goals must be performed first
'$exec_initialisation_goals' :- '$exec_initialisation_goals' :-
recorded('$system_initialisation',G,R), recorded('$system_initialisation',G,R),
erase(R), erase(R),
@ -839,7 +839,7 @@ db_files(Fs) :-
source_location(F, L), source_location(F, L),
'$current_module'(Mod), '$current_module'(Mod),
( open(Y, read, Stream) -> ( open(Y, read, Stream) ->
true ; true ;
'$do_error'(permission_error(input,stream,Y),include(X)) '$do_error'(permission_error(input,stream,Y),include(X))
), ),
'$set_current_loop_stream'(OldStream, Stream), '$set_current_loop_stream'(OldStream, Stream),
@ -879,7 +879,6 @@ db_files(Fs) :-
'$do_startup_reconsult'(_). '$do_startup_reconsult'(_).
'$skip_unix_header'(Stream) :- '$skip_unix_header'(Stream) :-
writeln(Stream),
peek_code(Stream, 0'#), !, % 35 is ASCII for '# peek_code(Stream, 0'#), !, % 35 is ASCII for '#
skip(Stream, 10), skip(Stream, 10),
'$skip_unix_header'(Stream). '$skip_unix_header'(Stream).
@ -903,7 +902,7 @@ source_file(Mod:Pred, FileName) :-
'$owned_by'(T, Mod, FileName) :- '$owned_by'(T, Mod, FileName) :-
'$owner_file'(T, Mod, FileName). '$owner_file'(T, Mod, FileName).
/** @pred prolog_load_context(? _Key_, ? _Value_) /** @pred prolog_load_context(? _Key_, ? _Value_)
Obtain information on what is going on in the compilation process. The Obtain information on what is going on in the compilation process. The
following keys are available: following keys are available:
@ -959,15 +958,15 @@ source_file(Mod:Pred, FileName) :-
Library files reside in the library_directory path (set by the Library files reside in the library_directory path (set by the
`LIBDIR` variable in the Makefile for YAP). Currently, `LIBDIR` variable in the Makefile for YAP). Currently,
most files in the library are from the Edinburgh Prolog library. most files in the library are from the Edinburgh Prolog library.
*/ */
prolog_load_context(directory, DirName) :- prolog_load_context(directory, DirName) :-
( source_location(F, _) ( source_location(F, _)
-> file_directory_name(F, DirName) ; -> file_directory_name(F, DirName) ;
working_directory( DirName, DirName ) working_directory( DirName, DirName )
). ).
prolog_load_context(file, FileName) :- prolog_load_context(file, FileName) :-
( source_location(FileName, _) ( source_location(FileName, _)
-> ->
true true
@ -986,10 +985,10 @@ prolog_load_context(source, F0) :-
; ;
F0 = user_input F0 = user_input
). ).
prolog_load_context(stream, Stream) :- prolog_load_context(stream, Stream) :-
'$nb_getval'('$consulting_file', _, fail), '$nb_getval'('$consulting_file', _, fail),
'$current_loop_stream'(Stream). '$current_loop_stream'(Stream).
prolog_load_context(term_position, Position) :- prolog_load_context(term_position, Position) :-
'$current_loop_stream'(Stream), '$current_loop_stream'(Stream),
stream_property(Stream, position(Position) ). stream_property(Stream, position(Position) ).
@ -998,7 +997,7 @@ prolog_load_context(term_position, Position) :-
% be imported from any module. % be imported from any module.
'$file_loaded'(Stream, M, Imports, TOpts) :- '$file_loaded'(Stream, M, Imports, TOpts) :-
'$file_name'(Stream, F0), '$file_name'(Stream, F0),
( (
atom_concat(Prefix, '.qly', F0 ) atom_concat(Prefix, '.qly', F0 )
-> ->
'$absolute_file_name'(Prefix,[access(read),file_type(prolog),file_errors(fail),solutions(first),expand(true)],F,load_files(Prefix)) '$absolute_file_name'(Prefix,[access(read),file_type(prolog),file_errors(fail),solutions(first),expand(true)],F,load_files(Prefix))
@ -1017,7 +1016,7 @@ prolog_load_context(term_position, Position) :-
% loaded from the same module, but does not define a module. % loaded from the same module, but does not define a module.
recorded('$lf_loaded','$lf_loaded'(F1, _, M),_), recorded('$lf_loaded','$lf_loaded'(F1, _, M),_),
same_file(F1,F), !. same_file(F1,F), !.
% if the file exports a module, then we can % if the file exports a module, then we can
% be imported from any module. % be imported from any module.
@ -1046,33 +1045,33 @@ prolog_load_context(term_position, Position) :-
% inform the file has been loaded and is now available. % inform the file has been loaded and is now available.
'$loaded'(Stream, UserFile, M, OldF, Line, Reconsult0, Reconsult, F, Dir, Opts) :- '$loaded'(Stream, UserFile, M, OldF, Line, Reconsult0, Reconsult, F, Dir, Opts) :-
'$file_name'(Stream, F0), '$file_name'(Stream, F0),
( F0 == user_input, nonvar(UserFile) -> UserFile = F ( F0 == user_input, nonvar(UserFile) -> UserFile = F
; F = F0 ), ; F = F0 ),
( F == user_input -> working_directory(Dir,Dir) ; file_directory_name(F, Dir) ), ( F == user_input -> working_directory(Dir,Dir) ; file_directory_name(F, Dir) ),
nb_setval('$consulting_file', F ), nb_setval('$consulting_file', F ),
( (
Reconsult0 \== consult, Reconsult0 \== consult,
Reconsult0 \== not_loaded, Reconsult0 \== not_loaded,
Reconsult \== changed, Reconsult \== changed,
recorded('$lf_loaded','$lf_loaded'(F, _,_),R), recorded('$lf_loaded','$lf_loaded'(F, _,_),R),
erase(R), erase(R),
fail fail
; ;
var(Reconsult0) var(Reconsult0)
-> ->
Reconsult = consult Reconsult = consult
; ;
Reconsult = Reconsult0 Reconsult = Reconsult0
), ),
( (
Reconsult \== consult, Reconsult \== consult,
recorded('$lf_loaded','$lf_loaded'(F, _, _, _, _, _, _),R), recorded('$lf_loaded','$lf_loaded'(F, _, _, _, _, _, _),R),
erase(R), erase(R),
fail fail
; ;
var(Reconsult) var(Reconsult)
-> ->
Reconsult = consult Reconsult = consult
; ;
Reconsult = Reconsult0 Reconsult = Reconsult0
), ),
@ -1133,7 +1132,7 @@ make_library_index(_Directory).
; ;
nb_setval('$loop_stream',Stream) nb_setval('$loop_stream',Stream)
). ).
'$current_loop_stream'(Stream) :- '$current_loop_stream'(Stream) :-
'$nb_getval'('$loop_stream',Stream, fail). '$nb_getval'('$loop_stream',Stream, fail).
@ -1218,7 +1217,7 @@ unload_file( F0 ) :-
'$unload_file'( FileName, _F0 ) :- '$unload_file'( FileName, _F0 ) :-
recorded('$module','$module'( FileName, Mod, _SourceF, _, _), R), recorded('$module','$module'( FileName, Mod, _SourceF, _, _), R),
erase( R ), erase( R ),
unload_module(Mod), unload_module(Mod),
fail. fail.
'$unload_file'( FileName, _F0 ) :- '$unload_file'( FileName, _F0 ) :-
recorded('$directive','$d'( FileName, _M:_G, _Mode, _VL, _Pos ), R), recorded('$directive','$d'( FileName, _M:_G, _Mode, _VL, _Pos ), R),
@ -1257,11 +1256,11 @@ module(Mod, Decls) :-
If module _M_ is instantiated, import the procedures in _L_ to the If module _M_ is instantiated, import the procedures in _L_ to the
current module. Otherwise, operate as use_module/2, and load the files current module. Otherwise, operate as use_module/2, and load the files
specified by _F_, importing the predicates specified in the list _L_. specified by _F_, importing the predicates specified in the list _L_.
*/ */
use_module(M,F,Is) :- '$use_module'(M,F,Is). use_module(M,F,Is) :- '$use_module'(M,F,Is).
'$use_module'(M,F,Is) :- '$use_module'(M,F,Is) :-
var(Is), !, var(Is), !,
'$use_module'(M,F,all). '$use_module'(M,F,all).
'$use_module'(M,F,Is) :- '$use_module'(M,F,Is) :-
@ -1303,7 +1302,7 @@ may be a predicate indicator or of the form `` _PI_ `as`
_NewName_'', meaning that the predicate with indicator _PI_ is _NewName_'', meaning that the predicate with indicator _PI_ is
to be exported under name _NewName_. to be exported under name _NewName_.
`except`( _List_) `except`( _List_)
In this case, all predicates not in _List_ are exported. Moreover, In this case, all predicates not in _List_ are exported. Moreover,
if ` _PI_ `as` _NewName_` is found, the predicate with if ` _PI_ `as` _NewName_` is found, the predicate with
indicator _PI_ is to be exported under name _NewName_ as indicator _PI_ is to be exported under name _NewName_ as
@ -1314,19 +1313,19 @@ Re-exporting predicates must be used with some care. Please, take into
account the following observations: account the following observations:
<ul> <ul>
<li> The `reexport` declarations must be the first declarations to <li> The `reexport` declarations must be the first declarations to
follow the `module` declaration. </li> follow the `module` declaration. </li>
<li> It is possible to use both `reexport` and `use_module`, but all <li> It is possible to use both `reexport` and `use_module`, but all
predicates reexported are automatically available for use in the predicates reexported are automatically available for use in the
current module. </li> current module. </li>
<li> In order to obtain efficient execution, YAP compiles <li> In order to obtain efficient execution, YAP compiles
dependencies between re-exported predicates. In practice, this means dependencies between re-exported predicates. In practice, this means
that changing a `reexport` declaration and then *just* recompiling that changing a `reexport` declaration and then *just* recompiling
the file may result in incorrect execution. </li> the file may result in incorrect execution. </li>
</ul> </ul>
*/ */
'$reexport'( TOpts, File, Reexport, Imports, OldF ) :- '$reexport'( TOpts, File, Reexport, Imports, OldF ) :-
@ -1341,7 +1340,7 @@ account the following observations:
@} @}
**/ **/
%% @{ %% @{
/** @defgroup YAPCompilerSettings Directing and Configuring the Compiler /** @defgroup YAPCompilerSettings Directing and Configuring the Compiler
@ingroup YAPProgramming @ingroup YAPProgramming
@ -1353,12 +1352,12 @@ account the following observations:
waraanings about possible issues with the code in the program, sich waraanings about possible issues with the code in the program, sich
as the occurrence . as the occurrence .
This section presents a set of built-ins predicates designed to set the This section presents a set of built-ins predicates designed to set the
environment for the compiler. environment for the compiler.
*/ */
/** @pred prolog_to_os_filename(+ _PrologPath_,- _OsPath_) /** @pred prolog_to_os_filename(+ _PrologPath_,- _OsPath_)
This is an SWI-Prolog built-in. Converts between the internal Prolog This is an SWI-Prolog built-in. Converts between the internal Prolog
@ -1404,7 +1403,7 @@ last one, onto underscores.
The compiler will execute goals _G_ after consulting the current The compiler will execute goals _G_ after consulting the current
file. file.
Notice that the goal will execute in the calling context, not within the file context, Notice that the goal will execute in the calling context, not within the file context,
In other words, the source module and execution directory will be the ones of the parent In other words, the source module and execution directory will be the ones of the parent
environment. Use initialization/2 for more flexible behavior. environment. Use initialization/2 for more flexible behavior.
@ -1433,20 +1432,20 @@ Similar to initialization/1, but allows for specifying when
+ now + now
Execute _Goal_ immediately. Execute _Goal_ immediately.
+ after_load + after_load
Execute _Goal_ after loading program-text. This is the same as initialization/1. Execute _Goal_ after loading program-text. This is the same as initialization/1.
+ restore + restore
Do not execute _Goal_ while loading the program, but only when restoring a state (not implemented yet). Do not execute _Goal_ while loading the program, but only when restoring a state (not implemented yet).
*/ */
initialization(G,OPT) :- initialization(G,OPT) :-
'$initialization'(G,OPT). '$initialization'(G,OPT).
'$initialization'(G,OPT) :- '$initialization'(G,OPT) :-
( (
var(G) var(G)
-> ->
'$do_error'(instantiation_error,initialization(G,OPT)) '$do_error'(instantiation_error,initialization(G,OPT))
@ -1484,7 +1483,7 @@ initialization(G,OPT) :-
'$do_error'(type_error(OPT),initialization(G,OPT)) '$do_error'(type_error(OPT),initialization(G,OPT))
). ).
'$initialization'(G,now) :- '$initialization'(G,now) :-
( call(G) -> true ; ( call(G) -> true ;
format(user_error,':- ~w failed.~n',[G]) ). format(user_error,':- ~w failed.~n',[G]) ).
'$initialization'(G,after_load) :- '$initialization'(G,after_load) :-
'$initialization'(G). '$initialization'(G).
@ -1496,7 +1495,7 @@ initialization(G,OPT) :-
@} @}
*/ */
%% @{ %% @{
@ -1538,10 +1537,10 @@ section_3.
section_else. section_else.
:- endif. :- endif.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/ */
/** @pred if( : _Goal_) /** @pred if( : _Goal_)
Compile subsequent code only if _Goal_ succeeds. For enhanced Compile subsequent code only if _Goal_ succeeds. For enhanced
portability, _Goal_ is processed by `expand_goal/2` before execution. portability, _Goal_ is processed by `expand_goal/2` before execution.
@ -1564,7 +1563,7 @@ If an error occurs, the error is printed and processing proceeds as if
% we are in skip mode, ignore.... % we are in skip mode, ignore....
'$if'(_Goal,_) :- '$if'(_Goal,_) :-
'$nb_getval'('$endif',elif(Level, OldEndif, skip), fail), !, '$nb_getval'('$endif',elif(Level, OldEndif, skip), fail), !,
nb_setval('$endif',endif(Level, OldEndif, skip)). nb_setval('$endif',endif(Level, OldEndif, skip)).
% we are in non skip mode, check.... % we are in non skip mode, check....
'$if'(Goal,_) :- '$if'(Goal,_) :-
('$if_call'(Goal) ('$if_call'(Goal)
@ -1578,7 +1577,7 @@ If an error occurs, the error is printed and processing proceeds as if
nb_setval('$if_skip_mode',skip) nb_setval('$if_skip_mode',skip)
). ).
/** /**
@pred else @pred else
Start `else' branch. Start `else' branch.
@ -1688,4 +1687,3 @@ consult_depth(LV) :- '$show_consult_level'(LV).
@} @}
*/ */