2001-06-06 20:40:57 +01:00
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% Logtalk - Object oriented extension to Prolog
|
2002-05-28 12:29:37 +01:00
|
|
|
% Release 2.12.0
|
2001-06-06 20:40:57 +01:00
|
|
|
%
|
|
|
|
% configuration file for YAP Prolog 4.3.x
|
|
|
|
%
|
2002-05-06 14:10:02 +01:00
|
|
|
% last updated: April 19, 2002
|
2001-06-06 20:40:57 +01:00
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% the following initialization is not needed to run Logtalk altough
|
|
|
|
% is recommended; you can comment it out if needed
|
|
|
|
|
|
|
|
:- initialization(
|
|
|
|
(set_prolog_flag(update_semantics, logical),
|
|
|
|
set_prolog_flag(unknown, error))).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% ISO Prolog Standard predicates that we must define because they are
|
|
|
|
% not built-in
|
|
|
|
%
|
|
|
|
% add a clause for lgt_iso_predicate/1 declaring each ISO predicate that
|
|
|
|
% we must define; there must be at least one clause for this predicate
|
|
|
|
% whose call should fail if we don't define any ISO predicates
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_iso_predicate(?callable).
|
|
|
|
|
|
|
|
lgt_iso_predicate(_) :-
|
|
|
|
fail.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% predicate properties
|
|
|
|
%
|
|
|
|
% this predicate must return at least static, dynamic and built_in
|
|
|
|
% properties for an existing predicate
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_predicate_property(+callable, ?predicate_property)
|
|
|
|
|
|
|
|
lgt_predicate_property(Pred, Prop) :-
|
|
|
|
predicate_property(Pred, Prop).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% metapredicates
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% forall(+callable, +callble)
|
|
|
|
|
|
|
|
forall(Generate, Test) :-
|
|
|
|
\+ call((Generate, \+ call(Test))).
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_call/2-8
|
|
|
|
%
|
|
|
|
% use these definitions only if your compiler does
|
|
|
|
% not provide call/1-8 as built-in predicates
|
|
|
|
|
|
|
|
lgt_call(F, A) :-
|
|
|
|
call_with_args(F, A).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_call(F, A1, A2) :-
|
|
|
|
call_with_args(F, A1, A2).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_call(F, A1, A2, A3) :-
|
|
|
|
call_with_args(F, A1, A2, A3).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_call(F, A1, A2, A3, A4) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_call(F, A1, A2, A3, A4, A5) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4, A5).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_call(F, A1, A2, A3, A4, A5, A6) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4, A5, A6).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_call(F, A1, A2, A3, A4, A5, A6, A7) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4, A5, A6, A7).
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_once/2-8
|
|
|
|
%
|
|
|
|
% if your compiler provides call/1-8 as built-in
|
|
|
|
% predicates rewrite these definitions using call(...), !.
|
|
|
|
|
|
|
|
lgt_once(F, A) :-
|
|
|
|
call_with_args(F, A),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
lgt_once(F, A1, A2) :-
|
|
|
|
call_with_args(F, A1, A2),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
lgt_once(F, A1, A2, A3) :-
|
|
|
|
call_with_args(F, A1, A2, A3),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
lgt_once(F, A1, A2, A3, A4) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
lgt_once(F, A1, A2, A3, A4, A5) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4, A5),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
lgt_once(F, A1, A2, A3, A4, A5, A6) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4, A5, A6),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
lgt_once(F, A1, A2, A3, A4, A5, A6, A7) :-
|
|
|
|
call_with_args(F, A1, A2, A3, A4, A5, A6, A7),
|
|
|
|
!.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% file extension predicates
|
|
|
|
%
|
|
|
|
% these extensions are used by Logtalk load/compile predicates
|
|
|
|
%
|
|
|
|
% you may want to change the extension for Prolog files to match
|
|
|
|
% the one expected by your Prolog compiler
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_file_extension(?atom, ?atom)
|
|
|
|
|
|
|
|
lgt_file_extension(logtalk, '.lgt').
|
|
|
|
lgt_file_extension(prolog, '.pl').
|
|
|
|
lgt_file_extension(xml, '.xml').
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
2002-02-08 19:57:23 +00:00
|
|
|
% default flag values
|
2001-06-06 20:40:57 +01:00
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
2002-02-08 19:57:23 +00:00
|
|
|
% lgt_default_flag(?atom, ?atom)
|
2001-06-06 20:40:57 +01:00
|
|
|
%
|
2002-02-08 19:57:23 +00:00
|
|
|
% default values for all flags
|
2001-06-06 20:40:57 +01:00
|
|
|
|
2002-02-08 19:57:23 +00:00
|
|
|
lgt_default_flag(iso_initialization_dir, true).
|
2001-06-06 20:40:57 +01:00
|
|
|
|
2002-02-08 19:57:23 +00:00
|
|
|
lgt_default_flag(xml, on).
|
|
|
|
lgt_default_flag(xsl, 'lgtxml.xsl').
|
2001-06-06 20:40:57 +01:00
|
|
|
|
2002-02-08 19:57:23 +00:00
|
|
|
lgt_default_flag(unknown, warning).
|
|
|
|
lgt_default_flag(misspelt, warning).
|
|
|
|
lgt_default_flag(singletons, warning).
|
|
|
|
lgt_default_flag(lgtredef, warning).
|
|
|
|
lgt_default_flag(plredef, silent).
|
|
|
|
lgt_default_flag(portability, silent).
|
2001-06-06 20:40:57 +01:00
|
|
|
|
2002-02-08 19:57:23 +00:00
|
|
|
lgt_default_flag(report, on).
|
2001-06-06 20:40:57 +01:00
|
|
|
|
2002-05-06 14:10:02 +01:00
|
|
|
lgt_default_flag(smart_compilation, off).
|
|
|
|
|
|
|
|
lgt_default_flag(startup_message, on).
|
|
|
|
|
2001-06-06 20:40:57 +01:00
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% list predicates
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
lgt_append([], List, List).
|
|
|
|
lgt_append([Head| Tail], List, [Head| Tail2]) :-
|
|
|
|
lgt_append(Tail, List, Tail2).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_member(Head, [Head| _]).
|
|
|
|
lgt_member(Head, [_| Tail]) :-
|
|
|
|
lgt_member(Head, Tail).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_member_var(V, [H| _]) :-
|
|
|
|
V == H.
|
|
|
|
lgt_member_var(V, [_| T]) :-
|
|
|
|
lgt_member_var(V, T).
|
|
|
|
|
|
|
|
|
|
|
|
lgt_proper_list([]).
|
|
|
|
lgt_proper_list([_| List]) :-
|
|
|
|
lgt_proper_list(List).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% file predicates
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_file_exists(+atom)
|
|
|
|
%
|
|
|
|
% see if a file exist in the current directory
|
|
|
|
|
|
|
|
lgt_file_exists(File) :-
|
|
|
|
exists(File).
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_load_prolog_code(+atom)
|
|
|
|
%
|
|
|
|
% compile and load a Prolog file
|
|
|
|
|
|
|
|
lgt_load_prolog_code(File) :-
|
|
|
|
reconsult(File).
|
|
|
|
|
|
|
|
|
2002-05-06 14:10:02 +01:00
|
|
|
% lgt_compare_file_mtimes(?atom, +atom, +atom)
|
|
|
|
%
|
|
|
|
% compare file modification times
|
|
|
|
|
|
|
|
lgt_compare_file_mtimes(Result, File1, File2) :-
|
|
|
|
file_property(File1, mod_time(Time1)),
|
|
|
|
file_property(File2, mod_time(Time2)),
|
|
|
|
compare(Result, Time1, Time2).
|
|
|
|
|
|
|
|
|
2001-06-06 20:40:57 +01:00
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% sorting predicates
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_keysort(+list, -list)
|
|
|
|
|
|
|
|
lgt_keysort(List, Sorted) :-
|
|
|
|
keysort(List, Sorted).
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_sort(+list, -list)
|
|
|
|
|
|
|
|
lgt_sort(List, Sorted) :-
|
|
|
|
sort(List, Sorted).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% time and date predicates
|
|
|
|
%
|
|
|
|
% if your Prolog compiler does not provide access to the operating system
|
|
|
|
% time and date just write dummy definitions
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_current_date(?Year, ?Month, ?Day)
|
|
|
|
|
|
|
|
lgt_current_date(99, 2, 7).
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_current_time(?Hours, ?Mins, ?Secs)
|
|
|
|
|
|
|
|
lgt_current_time(0, 0, 0).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% timing predicate
|
|
|
|
%
|
|
|
|
% if your Prolog compiler does not provide access to a timing predicate
|
|
|
|
% just write dummy definition
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% lgt_cpu_time(-Seconds)
|
|
|
|
|
|
|
|
lgt_cpu_time(Seconds) :-
|
|
|
|
Seconds is cputime.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% comparison predicate
|
|
|
|
%
|
|
|
|
% the usual compare/3 definition
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
% compare(?atom, @term, @term) -- built-in
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% end!
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|