From 828f8b07f7c6fcd468763eb678dc54675cb21eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Tue, 14 Dec 2010 12:39:24 +0000 Subject: [PATCH] make YAP more compatible with SWI by going inside 0 arguments (obs from Roberto). --- pl/modules.yap | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/pl/modules.yap b/pl/modules.yap index 150c8ffe0..f3b2e9d78 100644 --- a/pl/modules.yap +++ b/pl/modules.yap @@ -316,6 +316,7 @@ expand_goal(G, NG) :- '$do_expand'(G, M, NG), !. expand_goal(G, G). +'$do_expand'(G, _, G) :- var(G), !. '$do_expand'(M:G, CurMod, M:GI) :- !, '$do_expand'(G, M, GI). '$do_expand'(G, CurMod, GI) :- @@ -325,7 +326,8 @@ expand_goal(G, G). -> true ; - recorded('$dialect',swi,_), system:goal_expansion(G, GI) + recorded('$dialect',swi,_), + system:goal_expansion(G, GI) -> true ; @@ -335,25 +337,21 @@ expand_goal(G, G). ; user:goal_expansion(G, GI) ), !. -'$do_expand'((G1,G2), CurMod, (GI1,GI2)) :- - '$do_expand'(G1, CurMod, GI1), - '$do_expand'(G2, CurMod, GI2). -'$do_expand'((G1;G2), CurMod, (GI1;GI2)) :- - '$do_expand'(G1, CurMod, GI1), - '$do_expand'(G2, CurMod, GI2). -'$do_expand'((G1*->G2), CurMod, (GI1*->GI2)) :- - '$do_expand'(G1, CurMod, GI1), - '$do_expand'(G2, CurMod, GI2). -'$do_expand'((G1|G2), CurMod, (GI1|GI2)) :- - '$do_expand'(G1, CurMod, GI1), - '$do_expand'(G2, CurMod, GI2). -'$do_expand'((G1->G2), CurMod, (GI1->GI2)) :- - '$do_expand'(G1, CurMod, GI1), - '$do_expand'(G2, CurMod, GI2). -'$do_expand'(\+G1, CurMod, \+GI1) :- - '$do_expand'(G1, CurMod, GI1). -'$do_expand'(not(G1), CurMod, not(GI1)) :- - '$do_expand'(G1, CurMod, GI1). +'$do_expand'(G, CurMod, NG) :- + '$is_metapredicate'(G,CurMod), !, + functor(G, Name, Arity), + prolog:'$meta_predicate'(Name,CurMod,Arity,PredDef), + G =.. [Name|GArgs], + PredDef =.. [Name|GDefs], + '$expand_args'(GArgs, CurMod, GDefs, NGArgs), + NG =.. [Name|NGArgs]. + +'$expand_args'([], _, [], []). +'$expand_args'(A.GArgs, CurMod, 0.GDefs, NA.NGArgs) :- + '$do_expand'(A, CurMod, NA), !, + '$expand_args'(GArgs, CurMod, GDefs, NGArgs). +'$expand_args'(A.GArgs, CurMod, _.GDefs, A.NGArgs) :- + '$expand_args'(GArgs, CurMod, GDefs, NGArgs). % args are: % goal to expand @@ -476,7 +474,7 @@ expand_goal(G, G). '$install_meta_predicate'(P, M1) :- functor(P,F,N), ( M1 = prolog -> M = _ ; M1 = M), - ( retractall('$meta_predicate'(F,M,N,_)), fail ; true), + ( retractall(prolog:'$meta_predicate'(F,M,N,_)), fail ; true), asserta(prolog:'$meta_predicate'(F,M,N,P)), '$flags'(P, M1, Fl, Fl), NFlags is Fl \/ 0x200000,