27:-
do_c_built_in/3
do_c_built_metacall/3
expand_expr/3
expand_expr/5
expand_expr/6
private( [,
33:-
'$do_error'/2
use_system_module(
'$_errors', []).
35:-
'$clean_cuts'/2
use_system_module(
'$_modules', []).
85'$set_arith_expan'(on)
:- prolog_flag(optimise,true).
86'$set_arith_expan'(off)
:- prolog_flag(optimise,false).
123'$c_built_in'(
IN,
_M, (
:- _H),
IN)
:-
125'$c_built_in'(
IN,
_M, (
?- _H),
IN)
:-
127'$c_built_in'(
IN,
M,
H,
OUT)
:-
128 prolog_flag(optimise,true),
prolog_flag,
129 do_c_built_in(
IN,
M,
H,
OUT).
130'$c_built_in'(
IN,
_,
_H,
IN).
133do_c_built_in(
G,
M,
H,
OUT)
:- var(
G),
var,
134 do_c_built_metacall(
G,
M,
H,
OUT).
135do_c_built_in(
Mod:G,
_,
H,
OUT)
:-
136 '$yap_strip_module'(
Mod:G,
M1,
G1),
138 do_c_built_metacall(
G1,
M1,
H,
OUT).
139do_c_built_in(
'$do_error'(
Error,
Goal),
M,
Head,
OError)
:-
144 OError = throw(error(
Error,exception( [
152do_c_built_in(
'$do_error'(
Error,
_),
_M,
_Head, (throw(
Error)))
:- do_c_built_in.
153do_c_built_in(
X is Y,
M,
H,
P)
:-
155 do_c_built_in(
X =:= Y,
M,
H,
P).
156do_c_built_in(
X is Y,
M,
H, (
P,
A=X))
:-
158 do_c_built_in(
A is Y,
M,
H,
P).
159do_c_built_in(
X is Y,
_,
_,
P)
:-
165 expand_expr(
Y,
P0,
X0),
166 '$drop_is'(
X0,
X,
P0,
P)
168do_c_built_in(phrase(
NT,
Xs),
Mod,
H,
NTXsNil)
:-
169 '$_arith':do_c_built_in(phrase(
NT,
Xs,[]),
Mod,
H,
NTXsNil).
170do_c_built_in(phrase(
NT,
Xs0,
Xs),
Mod,
_,
NewGoal)
:-
171 '$c_built_in_phrase'(
NT,
Xs0,
Xs,
Mod,
NewGoal ).
173do_c_built_in(
Comp0,
_,
_,
R)
:-
174 '$compop'(
Comp0,
Op,
E,
F),
176 '$compop'(
Comp,
Op,
U,
V),
177 expand_expr(
E,
P,
U),
178 expand_expr(
F,
Q,
V),
180 '$do_and'(
R0,
Comp,
R).
181do_c_built_in(
P,
_M,
_H,
P).
189do_c_built_metacall(
G1,
Mod,
_, (
Mod:G1))
:- atom(
Mod),
nonvar(
G1),
nonvar.
190do_c_built_metacall(
G1,
Mod,
_, call(
Mod:G1)).
192'$do_and'(true,
P,
P)
:- '$do_and'.
193'$do_and'(
P, true,
P)
:- '$do_and'.
194'$do_and'(
P,
Q, (
P,
Q)).
199'$drop_is'(
V,
V1,
P0,
G)
:-
204'$drop_is'(
V,
X,
P0,
P)
:-
205 '$do_and'(
P0,
X is V,
P).
208'$compop'(
X < Y,
< ,
X,
Y).
209'$compop'(
X > Y,
> ,
X,
Y).
210'$compop'(
X=< Y,=< ,
X,
Y).
211'$compop'(
X >=Y, >=,
X,
Y).
212'$compop'(
X=:=Y,=:=,
X,
Y).
213'$compop'(
X=\=Y,=\=,
X,
Y).
215'$composed_built_in'(
V)
:- var(
V),
var,
217'$composed_built_in'((current_choice_point(
_),
NG,cut_by(
_)))
:- '$composed_built_in',
218 '$composed_built_in'(
NG).
219'$composed_built_in'((
_,
_)).
220'$composed_built_in'((
_;_)).
221'$composed_built_in'((
_|_)).
222'$composed_built_in'((
_->_)).
223'$composed_built_in'(
_:G)
:-
224 '$composed_built_in'(
G).
225'$composed_built_in'(
\+G)
:-
226 '$composed_built_in'(
G).
227'$composed_built_in'(
not(
G))
:-
228 '$composed_built_in'(
G).
234expand_expr(
V, true,
V)
:-
236expand_expr([
T],
E,
V)
:- expand_expr,
237 expand_expr(
T,
E,
V).
238expand_expr(
String,
_E,
V)
:-
239 string(
String ),
string,
240 string_codes(
String, [
V]).
241expand_expr(
A, true,
A)
:-
243expand_expr(
T,
E,
V)
:-
245 expand_expr(
A,
Q,
X),
246 expand_expr(
O,
X,
V,
Q,
E).
247expand_expr(
T,
E,
V)
:-
249 expand_expr(
A,
Q,
X),
250 expand_expr(
B,
R,
Y),
251 expand_expr(
O,
X,
Y,
V,
Q,
S),
258expand_expr(
Op,
X,
O,
Q,
Q)
:-
260 catch(
is(
O,
Op,
X),
_,fail),
catch.
261expand_expr(
Op,
X,
O,
Q,
P)
:-
262 '$unary_op_as_integer'(
Op,
IOp),
263 '$do_and'(
Q,
is(
O,
IOp,
X),
P).
272expand_expr(
Op,
X,
Y,
O,
Q,
Q)
:-
274 catch(
is(
O,
Op,
X,
Y),
_,fail),
catch.
275expand_expr(+,
X,
Y,
O,
Q,
P)
:- expand_expr,
276 '$preprocess_args_for_commutative'(
X,
Y,
X1,
Y1,
E),
277 '$do_and'(
E,
'$plus'(
X1,
Y1,
O),
F),
279expand_expr(-,
X,
Y,
O,
Q,
P)
:-
282 expand_expr(+,
Z,
X,
O,
Q,
P).
283expand_expr(-,
X,
Y,
O,
Q,
P)
:- expand_expr,
284 '$preprocess_args_for_non_commutative'(
X,
Y,
X1,
Y1,
E),
285 '$do_and'(
E,
'$minus'(
X1,
Y1,
O),
F),
287expand_expr(*,
X,
Y,
O,
Q,
P)
:- expand_expr,
288 '$preprocess_args_for_commutative'(
X,
Y,
X1,
Y1,
E),
289 '$do_and'(
E,
'$times'(
X1,
Y1,
O),
F),
291expand_expr(//,
X,
Y,
O,
Q,
P)
:-
292 nonvar(
Y),
Y == 0,
nonvar,
293 '$binary_op_as_integer'(//,
IOp),
294 '$do_and'(
Q,
is(
O,
IOp,
X,
Y),
P).
295expand_expr(//,
X,
Y,
O,
Q,
P)
:- expand_expr,
296 '$preprocess_args_for_non_commutative'(
X,
Y,
X1,
Y1,
E),
297 '$do_and'(
E,
'$div'(
X1,
Y1,
O),
F),
299expand_expr(/\,
X,
Y,
O,
Q,
P)
:- expand_expr,
300 '$preprocess_args_for_commutative'(
X,
Y,
X1,
Y1,
E),
301 '$do_and'(
E,
'$and'(
X1,
Y1,
O),
F),
303expand_expr(\/,
X,
Y,
O,
Q,
P)
:- expand_expr,
304 '$preprocess_args_for_commutative'(
X,
Y,
X1,
Y1,
E),
305 '$do_and'(
E,
'$or'(
X1,
Y1,
O),
F),
307expand_expr(<<,
X,
Y,
O,
Q,
P)
:-
310 expand_expr(>>,
X,
Z,
O,
Q,
P).
311expand_expr(<<,
X,
Y,
O,
Q,
P)
:- expand_expr,
312 '$preprocess_args_for_non_commutative'(
X,
Y,
X1,
Y1,
E),
313 '$do_and'(
E,
'$sll'(
X1,
Y1,
O),
F),
315expand_expr(>>,
X,
Y,
O,
Q,
P)
:-
318 expand_expr(<<,
X,
Z,
O,
Q,
P).
319expand_expr(>>,
X,
Y,
O,
Q,
P)
:- expand_expr,
320 '$preprocess_args_for_non_commutative'(
X,
Y,
X1,
Y1,
E),
321 '$do_and'(
E,
'$slr'(
X1,
Y1,
O),
F),
323expand_expr(
Op,
X,
Y,
O,
Q,
P)
:-
324 '$binary_op_as_integer'(
Op,
IOp),
325 '$do_and'(
Q,
is(
O,
IOp,
X,
Y),
P).
327'$preprocess_args_for_commutative'(
X,
Y,
X,
Y, true)
:-
329'$preprocess_args_for_commutative'(
X,
Y,
X,
Y, true)
:-
330 var(
X),
integer(
Y),
\+ '$bignum'(
Y),
'$bignum'.
331'$preprocess_args_for_commutative'(
X,
Y,
X,
Z,
Z = Y)
:-
333'$preprocess_args_for_commutative'(
X,
Y,
Y,
X, true)
:-
335'$preprocess_args_for_commutative'(
X,
Y,
Z,
X,
Z = Y)
:-
336 integer(
X),
\+ '$bignum'(
X),
'$bignum'.
337'$preprocess_args_for_commutative'(
X,
Y,
Z,
W,
E)
:-
338 '$do_and'(
Z = X,
Y = W,
E).
340'$preprocess_args_for_non_commutative'(
X,
Y,
X,
Y, true)
:-
342'$preprocess_args_for_non_commutative'(
X,
Y,
X,
Y, true)
:-
343 var(
X),
integer(
Y),
\+ '$bignum'(
Y),
'$bignum'.
344'$preprocess_args_for_non_commutative'(
X,
Y,
X,
Z,
Z = Y)
:-
346'$preprocess_args_for_non_commutative'(
X,
Y,
X,
Y, true)
:-
348'$preprocess_args_for_non_commutative'(
X,
Y,
X,
Z,
Z = Y)
:-
349 integer(
X),
\+ '$bignum'(
X),
'$bignum'.
350'$preprocess_args_for_non_commutative'(
X,
Y,
Z,
W,
E)
:-
351 '$do_and'(
Z = X,
Y = W,
E).
354'$goal_expansion_allowed'(phrase(
NT,
_Xs0,
_Xs),
Mod)
:-
363'$contains_illegal_dcgnt'(
NT)
:-
368 (
AI = !
; AI = phrase(
_,
_,
_) ), !.
372'$harmless_dcgexception'(instantiation_error).
373'$harmless_dcgexception'(type_error(callable,
_)).
380catch( : Goal,+ Exception,+ Action)
must_be_callable( ?_Goal_ )
stream_property( Stream, Prop )
yap_flag( ?Param, ?Value)
set_prolog_flag(+ Flag,+ Value)
between(+ Low:int, + High:int, ? Value:int)
plus(? Int1:int, ? Int2:int, ? Int3:int)
succ(? Int1:int, ? Int2:int)