Skip to content

Commit 1cbc3b7

Browse files
committed
probe compiler_lib from interpreter
1 parent 1575f90 commit 1cbc3b7

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

prolog/metta_lang/metta_compiler_lib.pl

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121

2222

2323
'mc__:'(Obj, Type, [':',Obj, Type]):- current_self(Self), sync_type(10, Self, Obj, Type). %freeze(Obj, get_type(Obj,Type)),!.
24+
sync_type(D, Self, Obj, Type):- nonvar(Obj), nonvar(Type), !, arg_conform(D, Self, Obj, Type).
2425
sync_type(D, Self, Obj, Type):- nonvar(Obj), var(Type), !, get_type(D, Self, Obj, Type).
25-
sync_type(D, Self, Obj, Type):- nonvar(Type), var(Obj), !, set_type(D, Self, Obj, Type), freeze(Obj, arg_conform(D, Self, Obj, Type)).
26-
sync_type(D, Self, Obj, Type):- nonvar(Type), nonvar(Obj), !, arg_conform(D, Self, Obj, Type).
26+
sync_type(D, Self, Obj, Type):- nonvar(Type), var(Obj), !, set_type(D, Self, Obj, Type). %, freeze(Obj, arg_conform(D, Self, Obj, Type)).
2727
sync_type(D, Self, Obj, Type):- freeze(Type,sync_type(D, Self, Obj, Type)), freeze(Obj, sync_type(D, Self, Obj, Type)),!.
2828

2929

30-
'mc__get-type'(Obj,Type):- attvar(Obj),current_self(Self),!,trace,get_attrs(Obj,Atts),get_type(10, Self, Obj,Type).
30+
%'mc__get-type'(Obj,Type):- attvar(Obj),current_self(Self),!,trace,get_attrs(Obj,Atts),get_type(10, Self, Obj,Type).
3131
'mc__get-type'(Obj,Type):- current_self(Self), !, get_type(10, Self, Obj,Type).
3232

3333
%%%%%%%%%%%%%%%%%%%%% arithmetic

prolog/metta_lang/metta_eval.pl

+19-3
Original file line numberDiff line numberDiff line change
@@ -629,14 +629,16 @@
629629
Head=..[E20,Eq,RetType,Depth,Self,[F|Args],Res],
630630
is_like_eval_20(E20),
631631
clause(Head, Body),
632+
ignore(once((sub_term(FF==Sym, Body), atom(Sym), FF == F,F=Sym))),
632633
%min_max_args(Args,Startl,Ends),
633634
(is_list(Args)->true;between(1,5,Len)),
635+
once(len_or_unbound(Args,Len)),
634636
nonvar(F),atom(F),
635637
ignore(Depth=666),
636-
ignore(Eq= '='),
638+
% ignore(Eq= '='),
637639
ignore(Self= '&self'),
638-
get_operator_typedef(Self,F,Len,ParamTypes,RetType),
639-
once(len_or_unbound(Args,Len)).
640+
once(get_operator_typedef(Self,F,Len,ParamTypes,RetType)).
641+
640642

641643

642644
eval_20(Eq,RetType,_Dpth,_Slf,['repl!'],Y):- !, repl,check_returnval(Eq,RetType,Y).
@@ -2288,6 +2290,20 @@
22882290
as_tf(same_terms(X,Y),TF).
22892291

22902292

2293+
eval_20(_Eq,RetType,_Dpth,_Slf,[EQ|Args],TF):-
2294+
prefix_impl_preds('mc__',EQ,Len),
2295+
append(Args,[TF],PArgs),length(PArgs,Len),
2296+
atom_concat('mc__',EQ,Fn),!,
2297+
apply(Fn,PArgs).
2298+
2299+
eval_20(_Eq,RetType,_Dpth,_Slf,[EQ|Args],TF):-
2300+
prefix_impl_preds('mi__',EQ,Len),
2301+
append(Args,[TF],PArgs),length(PArgs,Len),
2302+
atom_concat('mi__',EQ,Fn),!,
2303+
apply(Fn,PArgs).
2304+
2305+
2306+
22912307
suggest_type(_RetType,_Bool).
22922308

22932309
naive_eval_args:-

0 commit comments

Comments
 (0)