Skip to content

Commit be0d4cf

Browse files
committed
fine for now
1 parent 277e7c4 commit be0d4cf

File tree

3 files changed

+70
-21
lines changed

3 files changed

+70
-21
lines changed

prolog/metta_lang/metta_compiler.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
* POSSIBILITY OF SUCH DAMAGE.
5252
*/
5353

54-
:- if(true).
54+
:- if(false).
5555

5656
:- include(metta_compiler_roy).
5757

prolog/metta_lang/metta_compiler_lib.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22

3-
:- if(true).
3+
:- if(false).
44

55
:- include(metta_compiler_lib_roy).
66

prolog/metta_lang/metta_eval.pl

Lines changed: 68 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3425,23 +3425,23 @@
34253425
call_as_p2a(F,X,Y):- must_use_eval(F,2), !,
34263426
once(eval([F,X,Y],RetVal)),
34273427
f2_success(RetVal,X,Y).
3428-
%call_as_p2(F2,A,B):- f2_to_p2(F2,P2),F2\==P2,!,call(P2,A,B).
3429-
call_as_p2a(F2,A,B):- f2_to_p3(F2,P3),F2\==P3,!,call(P3,A,B,RetVal),f2_success(RetVal,A,B).
3428+
%call_as_p2(F2,A,B):- f2_to_p2(Pre,F2,P2),F2\==P2,!,call(P2,A,B).
3429+
call_as_p2a(F2,A,B):- f2_to_p3(_Pre,F2,P3),F2\==P3,!,call(P3,A,B,RetVal),f2_success(RetVal,A,B).
34303430
call_as_p2a(F2,A,B):- eval_as_f2(F2,A,B,RetVal),f2_success(RetVal,A,B).
34313431

34323432
f2_success(RetVal,A,B):- once(RetVal=='True';RetVal==A;RetVal==B).
34333433

34343434
eval_as_f2(F2,A,B,RetVal):- current_predicate_fast(F2/3),!,call(F2,A,B,RetVal),!.
3435-
eval_as_f2(F2,A,B,RetVal):- f2_to_p3(F2,P3),!,call(P3,A,B,RetVal).
3435+
eval_as_f2(F2,A,B,RetVal):- f2_to_p3(_Pre,F2,P3),!,call(P3,A,B,RetVal).
34363436
eval_as_f2(F2,A,B,RetVal):- once(eval([F2,A,B],TF)),
34373437
(TF == 'True'-> RetVal=A ;
34383438
TF == 'False'-> fail ; RetVal = TF).
34393439

3440-
f2_to_p2(F2,P2):-
3441-
transpiler_peek(F2,2,[mx,me,mi,mc],P2,_,exactArgs).
3440+
f2_to_p2(Pre,F2,P2):-
3441+
transpiler_peek(Pre,F2,2,[mx,me,mi,mc],P2,_,exactArgs).
34423442

3443-
f2_to_p3(F2,P2):-
3444-
transpiler_peek(F2,2,[mx,me,mi,mc],P2,_,exactArgs).
3443+
f2_to_p3(Pre,F2,P2):-
3444+
transpiler_peek(Pre,F2,2,[mx,me,mi,mc],P2,_,exactArgs).
34453445

34463446

34473447

@@ -3719,17 +3719,66 @@
37193719
same_terms(X,Y):- \+ compound(X), X==Y.
37203720
% Main evaluation predicate with full caching
37213721

3722+
/*
37223723
3723-
3724-
transpiler_peek(Sym,Len,TypeL,Fn, Min, SpreadArgs):-
3725-
transpiler_peek_impl(Sym,Len,TypeL,Fn, Min, SpreadArgs),
3726-
debug_info(always(compiler),transpiler_peek(Sym,Len,TypeL,Fn, Min, SpreadArgs)).
3727-
3728-
transpiler_peek_impl(Sym,Len,TypeL,Fn, Min, SpreadArgs):-
3724+
m_head_impl_va(pre,'py-atom!',_,mc_n1('py-atom'),1).
3725+
m_head_impl_va(post,'py-atom',_,mx_n1('py-atom'),1).
3726+
m_head_impl_va(pre,'py-dot!',_,mc_n2('py-dot'),2).
3727+
m_head_impl_va(post,'py-dot',_,mx_n2('py-dot'),2).
3728+
*/
3729+
info(_).
3730+
3731+
gen_mdecl:- forall(gen_mdecl(_),true).
3732+
3733+
gen_mdecl(exactArgs):-
3734+
forall(pre_post_functor(Pre,MC),
3735+
forall(between(0,10,Len),
3736+
((length(Args,Len), append([F|Args],[_Ret],AfterMC), P=..[MC|AfterMC]),
3737+
forall(clause(P,_Body),
3738+
if_t(ground(F),compiler_assertz_verbose(m_head_impl(F,Len,Pre,MC))))))).
3739+
gen_mdecl(restAsList):-
3740+
forall(pre_post_functor_va(Pre,MC),
3741+
forall(between(0,10,Len),
3742+
((length(Args,Len), append([Len,F|Args],[_AsList,_Ret],AfterMC), P=..[MC|AfterMC]),
3743+
forall(clause(P,_Body),
3744+
if_t(ground(F),compiler_assertz_verbose(m_head_impl_va(F,Len,Pre,MC))))))).
3745+
3746+
3747+
pre_post_functor(pre,mc).
3748+
pre_post_functor(post,mx).
3749+
pre_post_functor_va(pre,mc_n).
3750+
pre_post_functor_va(post,mx_n).
3751+
3752+
:- dynamic(m_head_impl/4).
3753+
m_head_impl('random-int',3,post,mx).
3754+
3755+
:- dynamic(m_head_impl_va/4).
3756+
m_head_impl_va('py-dot!',2,post,mc_n).
3757+
m_head_impl_va('py-dot',2,post,mx_n).
3758+
m_head_impl_va('py-atom!',1,post,mc_n).
3759+
m_head_impl_va('py-atom',1,post,mx_n).
3760+
3761+
m_head_impl(Pre,Sym,Len, Type,Fn, Min, exactArgs):-
3762+
if_t((var(Pre),nonvar(Type)),pre_post_functor(Pre,Type)),
3763+
m_head_impl(Sym,Min,Pre,IsType),!, Min=Len, Fn =.. [IsType,Sym].
3764+
m_head_impl(Pre,Sym,Len, Type,Fn, Min, restAsList):-
3765+
if_t((var(Pre),nonvar(Type)),pre_post_functor(Pre,Type)),
3766+
m_head_impl_va(Sym,Min,Pre,IsType), Min =< Len, !, Fn =.. [IsType,Min,Sym].
3767+
3768+
3769+
transpiler_peek(Pre,Sym,Len,TypeL,Fn, Min, SpreadArgs):-
3770+
member(Sym,['random-int','random-seed']),
3771+
transpiler_peek_impl(Pre,Sym,Len,TypeL,Fn, Min, SpreadArgs),
3772+
debug_info(always(compiler),transpiler_peek(Pre,Sym,Len,TypeL,Fn, Min, SpreadArgs)).
3773+
3774+
transpiler_peek_impl(Pre,Sym,Len,TypeL,Fn, Min, SpreadArgs):-
37293775
is_list(TypeL), !, member(Type,TypeL),
3730-
transpiler_peek(Sym,Len,Type,Fn, Min, SpreadArgs).
3776+
transpiler_peek(Pre,Sym,Len,Type,Fn, Min, SpreadArgs).
3777+
3778+
transpiler_peek_impl(Pre,Sym,Len,Type,Fn, Min, SpreadArgs):-
3779+
m_head_impl(Pre,Sym,Len,Type,Fn, Min, SpreadArgs),!.
37313780

3732-
transpiler_peek_impl(Sym,Len,Type,Fn, Min, exactArgs):- Len=Min,
3781+
transpiler_peek_impl(_Pre,Sym,Len,Type,Fn, Min, exactArgs):- Len=Min,
37333782
if_t((var(Sym)),ignore(transpiler_predicate_store(_, Sym,_ , _, _, _, _))),
37343783
nonvar(Sym),
37353784
if_t((var(Len)),ignore(transpiler_predicate_store(_,Sym,[Len],_, _, _, _))),
@@ -3739,7 +3788,7 @@
37393788
succ(Len,LenP1), current_predicate_fast(Fn/LenP1),
37403789
ok_call_predicate(Sym,Len,Type).
37413790

3742-
transpiler_peek_impl(Sym,Len,Type,Fn, Min, restAsList):-
3791+
transpiler_peek_impl(_Pre,Sym,Len,Type,Fn, Min, restAsList):-
37433792
% if_t((var(Sym)),ignore(transpiler_predicate_nary_store(_, Sym,_ , _, _, _, _))),
37443793
if_t(var(Len),between(1,10,Len)),
37453794
if_t(var(Type),member(Type,['mx','me','mi','mc'])),
@@ -3750,7 +3799,7 @@
37503799
ok_call_predicate(Sym,Len,Type).
37513800

37523801
/*
3753-
transpiler_peek_impl(Sym,Len,Type,Fn, Min, restAsList):-
3802+
transpiler_peek_impl(Pre,Sym,Len,Type,Fn, Min, restAsList):-
37543803
between(0,Len, Min),
37553804
if_t(var(Type),member(Type,['mx','mi','mc'])),
37563805
format(atom(Fn),'~w_n_~w__~w',[Type,Min,Sym]),
@@ -3791,15 +3840,15 @@
37913840
fail,
37923841
symbol(Sym), is_list(Args),
37933842
length(Args, Len),
3794-
transpiler_peek(Sym,Len,'mx',Fn, Min, AsList),
3843+
transpiler_peek(pre,Sym,Len,['mx','me'],Fn, Min, AsList),
37953844
jiggle_args(Args,Res,Len,Min,AsList,PArgs), ! ,
37963845
with_metta_ctx(Eq, RetType, Depth, Self, [Sym | Args], apply(Fn, PArgs)).
37973846

37983847
eval_40(Eq, RetType, Depth, Self, [Sym | Args], Res) :-
37993848
%fail,
38003849
symbol(Sym), is_list(Args),
38013850
length(Args, Len),
3802-
transpiler_peek(Sym,Len,'mi',Fn, Min, AsList),
3851+
transpiler_peek(post,Sym,Len,['mi','mc','me','mx'],Fn, Min, AsList),
38033852
jiggle_args(Args,Res,Len,Min,AsList,PArgs),
38043853
%length(PArgs,LenP1), (symbol_file(Fn/LenP1,Sym,Len, scan_exists_in_interp);symbol_file(Fn/LenP1,Sym,Len, exists_in_compiler)),
38053854
!,

0 commit comments

Comments
 (0)