YAP 7.1.0
strict_iso.yap
Go to the documentation of this file.
1/**
2 * @file strict_iso.yap
3 * @author VITOR SANTOS COSTA <vsc@VITORs-MBP-2.lan>
4 * @date Thu Oct 19 12:15:33 2017
5 *
6 * @brief StrictISO Mode
7 *
8 * @addtogroup YAPCompilerSettings
9 *
10 *
11*/
12:- system_module( '$_strict_iso', [], ['$check_iso_strict_clause'/1,
13 '$iso_check_goal'/2]).
14
15:- '$do_error'/2use_system_module( '$_errors', []).
16
17'$iso_check_goal'(V,G) :-
18 var(V), var,
19 '$do_error'(instantiation_error,call(G)).
20'$iso_check_goal'(V,G) :-
21 number(V), number,
22 '$do_error'(type_error(callable,V),G).
23'$iso_check_goal'(_:G,G0) :- '$iso_check_goal',
24 '$iso_check_goal'(G,G0).
25'$iso_check_goal'((G1,G2),G0) :- '$iso_check_goal',
26 '$iso_check_a_goal'(G1,(G1,G2),G0),
27 '$iso_check_a_goal'(G2,(G1,G2),G0).
28'$iso_check_goal'((G1;G2),G0) :- '$iso_check_goal',
29 '$iso_check_a_goal'(G1,(G1;G2),G0),
30 '$iso_check_a_goal'(G2,(G1;G2),G0).
31'$iso_check_goal'((G1->G2),G0) :- '$iso_check_goal',
32 '$iso_check_a_goal'(G1,(G1->G2),G0),
33 '$iso_check_a_goal'(G2,(G1->G2),G0).
34'$iso_check_goal'(!,_) :- '$iso_check_goal'.
35'$iso_check_goal'((G1|G2),G0) :-
36 current_prolog_flag(language, iso), current_prolog_flag,
37 '$do_error'(domain_error(builtin_procedure,(G1|G2)), call(G0)).
38'$iso_check_goal'((G1|G2),G0) :- '$iso_check_goal',
39 '$iso_check_a_goal'(G1,(G1|G2),G0),
40 '$iso_check_a_goal'(G2,(G1|G2),G0).
41'$iso_check_goal'(G,G0) :-
42 current_prolog_flag(language, iso),
43 '$system_predicate'(G,prolog),
44 (
45 '$iso_builtin'(G)
46 ->
47 '$iso_builtin'
48 ;
49 '$do_error'(domain_error(builtin_procedure,G), call(G0))
50 ).
51'$iso_check_goal'(_,_).
52
53'$iso_check_a_goal'(V,_,G) :-
54 var(V), var,
55 '$do_error'(instantiation_error,call(G)).
56'$iso_check_a_goal'(V,E,G) :-
57 number(V), number,
58 '$do_error'(type_error(callable,E),call(G)).
59'$iso_check_a_goal'(_:G,E,G0) :- '$iso_check_a_goal',
60 '$iso_check_a_goal'(G,E,G0).
61'$iso_check_a_goal'((G1,G2),E,G0) :- '$iso_check_a_goal',
62 '$iso_check_a_goal'(G1,E,G0),
63 '$iso_check_a_goal'(G2,E,G0).
64'$iso_check_a_goal'((G1;G2),E,G0) :- '$iso_check_a_goal',
65 '$iso_check_a_goal'(G1,E,G0),
66 '$iso_check_a_goal'(G2,E,G0).
67'$iso_check_a_goal'((G1->G2),E,G0) :- '$iso_check_a_goal',
68 '$iso_check_a_goal'(G1,E,G0),
69 '$iso_check_a_goal'(G2,E,G0).
70'$iso_check_a_goal'(!,_,_) :- '$iso_check_a_goal'.
71'$iso_check_a_goal'((_|_),E,G0) :-
72 current_prolog_flag(language, iso), current_prolog_flag,
73 '$do_error'(domain_error(builtin_procedure,E), call(G0)).
74'$iso_check_a_goal'((_|_),_,_) :- '$iso_check_a_goal'.
75'$iso_check_a_goal'(G,_,G0) :-
76 current_prolog_flag(language, iso),
77 '$is+system_predicate'(G,prolog),
78 (
79 '$iso_builtin'(G)
80 ->
81 '$iso_builtin'
82 ;
83 '$do_error'(domain_error(builtin_procedure,G), call(G0))
84 ).
85'$iso_check_a_goal'(_,_,_).
86
87'$check_iso_strict_clause'((_:-B)) :- '$check_iso_strict_clause',
88 '$check_iso_strict_body'(B).
89'$check_iso_strict_clause'(_).
90
91'$check_iso_strict_body'((B1,B2)) :- '$check_iso_strict_body',
92 '$check_iso_strict_body'(B1),
93 '$check_iso_strict_body'(B2).
94'$check_iso_strict_body'((B1;B2)) :- '$check_iso_strict_body',
95 '$check_iso_strict_body'(B1),
96 '$check_iso_strict_body'(B2).
97'$check_iso_strict_body'((B1->B2)) :- '$check_iso_strict_body',
98 '$check_iso_strict_body'(B1),
99 '$check_iso_strict_body'(B2).
100'$check_iso_strict_body'(B) :-
101 '$check_iso_strict_goal'(B).
102
103'$check_iso_strict_goal'(G) :-
104 '$is_system_predicate'(G,prolog), '$is_system_predicate',
105 '$check_iso_system_goal'(G).
106'$check_iso_strict_goal'(_).
107
108
109'$check_iso_system_goal'(G) :-
110 '$iso_builtin'(G), '$iso_builtin'.
111'$check_iso_system_goal'(G) :-
112 '$do_error'(domain_error(builtin_procedure,G), G).
113
114'$iso_builtin'(abolish(_)).
115'$iso_builtin'(acylic_term(_)).
116'$iso_builtin'(arg(_,_,_)).
117'$iso_builtin'(_=:=_).
118'$iso_builtin'(_=\=_).
119'$iso_builtin'(_>_).
120'$iso_builtin'(_>=_).
121'$iso_builtin'(_<_).
122'$iso_builtin'(_=<_).
123'$iso_builtin'(asserta(_)).
124'$iso_builtin'(assertz(_)).
125'$iso_builtin'(at_end_of_stream).
126'$iso_builtin'(at_end_of_stream(_)).
127'$iso_builtin'(atom(_)).
128'$iso_builtin'(atom_chars(_,_)).
129'$iso_builtin'(atom_codes(_,_)).
130'$iso_builtin'(atom_concat(_,_,_)).
131'$iso_builtin'(atom_length(_,_)).
132'$iso_builtin'(atomic(_)).
133'$iso_builtin'(bagof(_,_,_)).
134'$iso_builtin'(call(_)).
135'$iso_builtin'(call(_,_)).
136'$iso_builtin'(call(_,_,_)).
137'$iso_builtin'(call(_,_,_,_)).
138'$iso_builtin'(call(_,_,_,_,_)).
139'$iso_builtin'(call(_,_,_,_,_,_)).
140'$iso_builtin'(call(_,_,_,_,_,_,_)).
141'$iso_builtin'(call(_,_,_,_,_,_,_,_)).
142'$iso_builtin'(callable(_)).
143'$iso_builtin'(catch(_,_,_)).
144'$iso_builtin'(char_code(_,_)).
145'$iso_builtin'(char_conversion(_,_)).
146'$iso_builtin'(clause(_,_)).
147'$iso_builtin'(close(_)).
148'$iso_builtin'(close(_,_)).
149'$iso_builtin'(compare(_,_,_)).
150'$iso_builtin'(compound(_)).
151'$iso_builtin'((_,_)).
152'$iso_builtin'(copy_term(_,_)).
153'$iso_builtin'(current_char_conversion(_,_)).
154'$iso_builtin'(current_input(_)).
155'$iso_builtin'(current_op(_,_,_)).
156'$iso_builtin'(current_output(_)).
157'$iso_builtin'(current_predicate(_)).
158'$iso_builtin'(current_prolog_flag(_,_)).
159'$iso_builtin'(!).
160'$iso_builtin'((_;_)).
161'$iso_builtin'(fail).
162'$iso_builtin'(false).
163'$iso_builtin'(findall(_,_,_)).
164'$iso_builtin'(float(_)).
165'$iso_builtin'(abort).
166'$iso_builtin'(flush_output).
167'$iso_builtin'(flush_output(_)).
168'$iso_builtin'(functor(_,_,_)).
169'$iso_builtin'(get_byte(_)).
170'$iso_builtin'(get_byte(_,_)).
171'$iso_builtin'(get_char(_)).
172'$iso_builtin'(get_char(_,_)).
173'$iso_builtin'(get_code(_)).
174'$iso_builtin'(get_code(_,_)).
175'$iso_builtin'(ground(_)).
176'$iso_builtin'(halt).
177'$iso_builtin'(halt(_)).
178'$iso_builtin'((_->_)).
179'$iso_builtin'(integer(_)).
180'$iso_builtin'(_ is _).
181'$iso_builtin'(keysort(_,_)).
182'$iso_builtin'(nl).
183'$iso_builtin'(nl(_)).
184'$iso_builtin'(nonvar(_)).
185'$iso_builtin'(\+(_)).
186'$iso_builtin'(number(_)).
187'$iso_builtin'(number_chars(_,_)).
188'$iso_builtin'(number_codes(_,_)).
189'$iso_builtin'(once(_)).
190'$iso_builtin'(op(_,_,_)).
191'$iso_builtin'(open(_,_,_)).
192'$iso_builtin'(open(_,_,_,_)).
193'$iso_builtin'(peek_byte(_)).
194'$iso_builtin'(peek_byte(_,_)).
195'$iso_builtin'(peek_char(_)).
196'$iso_builtin'(peek_char(_,_)).
197'$iso_builtin'(peek_code(_)).
198'$iso_builtin'(peek_code(_,_)).
199'$iso_builtin'(put_byte(_)).
200'$iso_builtin'(put_byte(_,_)).
201'$iso_builtin'(put_char(_)).
202'$iso_builtin'(put_char(_,_)).
203'$iso_builtin'(put_code(_)).
204'$iso_builtin'(put_code(_,_)).
205'$iso_builtin'(read(_)).
206'$iso_builtin'(read(_,_)).
207'$iso_builtin'(read_term(_,_)).
208'$iso_builtin'(read_term(_,_,_)).
209'$iso_builtin'(repeat).
210'$iso_builtin'(retract(_)).
211'$iso_builtin'(retractall(_)).
212'$iso_builtin'(set_input(_)).
213'$iso_builtin'(set_output(_)).
214'$iso_builtin'(set_prolog_flag(_,_)).
215'$iso_builtin'(set_stream_position(_,_)).
216'$iso_builtin'(setof(_,_,_)).
217'$iso_builtin'(sort(_,_)).
218'$iso_builtin'(stream_property(_,_)).
219'$iso_builtin'(sub_atom(_,_,_,_,_)).
220'$iso_builtin'(subsumes_term(_,_)).
221'$iso_builtin'(_@>_).
222'$iso_builtin'(_@>=_).
223'$iso_builtin'(_==_).
224'$iso_builtin'(_@<_).
225'$iso_builtin'(_@=<_).
226'$iso_builtin'(_\==_).
227'$iso_builtin'(term_variables(_,_)).
228'$iso_builtin'(throw(_)).
229'$iso_builtin'(true).
230'$iso_builtin'(_\=_).
231'$iso_builtin'(_=_).
232'$iso_builtin'(unify_with_occurs_check(_,_)).
233'$iso_builtin'(_384=.._385).
234'$iso_builtin'(var(_)).
235'$iso_builtin'(write(_)).
236'$iso_builtin'(write(_,_)).
237'$iso_builtin'(write_canonical(_)).
238'$iso_builtin'(write_canonical(_,_)).
239'$iso_builtin'(write_term(_,_)).
240'$iso_builtin'(write_term(_,_,_)).
241'$iso_builtin'(writeq(_)).
242'$iso_builtin'(writeq(_,_)).
243
244
current_prolog_flag(? Flag,- Value)
number( T)
var( T)