Skip to content

Commit 51bc11b

Browse files
committed
vnamed do_load
1 parent 9757454 commit 51bc11b

File tree

3 files changed

+46
-32
lines changed

3 files changed

+46
-32
lines changed

prolog/metta_lang/metta_compiler.pl

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -431,11 +431,21 @@
431431
)
432432
;
433433
% new, insert clause
434-
compiler_assertz(transpiler_predicate_store(user,FnName,LenArgs,todo,todo,FinalLazyArgsAdj,FinalLazyRetAdj)),
435-
setup_mi_me(FnName,LenArgs,FinalLazyArgsAdj,FinalLazyRetAdj),
434+
current_compiler_context(CompCtx), % where expected to be stored (builtin,user,etc)
435+
setup_library_call(CompCtx,FnName,LenArgs,todo,todo,FinalLazyArgsAdj,FinalLazyRetAdj),
436436
recompile_from_depends(FnName,LenArgs)
437437
).
438438

439+
create_mc_name(LenArgs,FnName,String) :-
440+
length(LenArgs,L),
441+
append(['mc_',L|LenArgs],[FnName],Parts),
442+
atomic_list_concat(Parts,'_',String).
443+
444+
current_compiler_context(Self):- current_self(Self), Self\=='&top', Self\==[], !. % atom(Self),
445+
current_compiler_context(Filename):- option_value(loading_file, Filename), Filename\==[], !.
446+
current_compiler_context(CompCtx):- option_value(compiler_context, CompCtx),!.
447+
current_compiler_context(user).
448+
439449
get_curried_name_structure(null,'',[],[]) :- !. % special null case
440450
get_curried_name_structure([],[],[],[]) :- !.
441451
get_curried_name_structure([FnList|Args],Fn,TotalArgs,[L|LenArgs]) :- is_list(FnList),!,
@@ -486,7 +496,7 @@
486496

487497
number_vars_wo_conficts(X,XX):-
488498
copy_term(X,XX),
489-
woc(max_integer_in_term(XX,0,N)),
499+
woct(max_integer_in_term(XX,0,N)),
490500
succ(N,N2),
491501
numbervars(XX,N2,_,[attvar(skip)]).
492502

@@ -499,10 +509,10 @@
499509
%retract(transpiler_predicate_store(_,Fn,Arity,_,_,_,_)),
500510
create_prefixed_name('mc_',Arity,Fn,FnWPrefix),
501511
abolish(FnWPrefix/ArityP1),
502-
create_prefixed_name('mc_',Arity,Fn,FnWMiPrefix),
503-
%abolish(FnWMiPrefix/ArityP1),
504-
create_prefixed_name('mc_',Arity,Fn,FnWMePrefix),
505-
%abolish(FnWMePrefix/ArityP1),
512+
% create_prefixed_name('mi_',Arity,Fn,FnWMiPrefix),
513+
% abolish(FnWMiPrefix/ArityP1),
514+
% create_prefixed_name('me_',Arity,Fn,FnWMePrefix),
515+
% abolish(FnWMePrefix/ArityP1),
506516
% retract(transpiler_stub_created(Fn,Arity)),
507517
% create an ordered list of integers to make sure to do them in order
508518
findall(ClauseIDt,transpiler_clause_store(Fn,Arity,ClauseIDt,_,_,_,_,_,_),ClauseIdList),
@@ -2532,10 +2542,16 @@
25322542
call4(G):- call(G).
25332543
call5(G):- call(G).
25342544

2535-
trace_break:- trace,break.
2545+
trace_break:- trace_break((trace,break)).
2546+
trace_break(G):-
2547+
stream_property(Err, file_no(2)),
2548+
current_output(Cur), Cur\=@=Err,!,
2549+
with_output_to(Err, trace_break(G)).
2550+
trace_break(G):- nl, writeq(call(G)), trace,break.
2551+
% :- set_prolog_flag(gc,false).
25362552

25372553
:- if(debugging(metta(compiler_bugs))).
2538-
:- set_prolog_flag(gc,false).
2554+
:- set_prolog_flag(gc,false).
25392555
:- endif.
25402556

25412557
call_fr(G,Result,FA):- current_predicate(FA),!,call(G,Result).

prolog/metta_lang/metta_compiler_lib.pl

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -361,14 +361,18 @@
361361
convert_space('&self','&top') :- !.
362362
convert_space(S,S).
363363

364-
:- initialization(setup_library_call(builtin, 'add-atom', [2], '@doc', '@doc', [x(doeval,eager,[]), x(noeval,eager,[])], x(doeval,eager,[])), program).
365-
'mc__1_2_add-atom'(Space,PredDecl,[]) :- convert_space(Space,Space1),A=metta_atom_asserted(Space1,PredDecl),(call(A) -> true ; assertz(A)).
366-
367-
:- initialization(setup_library_call(builtin, 'remove-atom', [2], '@doc', '@doc', [x(doeval,eager,[]), x(noeval,eager,[])], x(doeval,eager,[])), program).
368-
'mc__1_2_remove-atom'(Space,PredDecl,[]) :- convert_space(Space,Space1),retractall(metta_atom_asserted(Space1,PredDecl)).
369-
370-
:- initialization(setup_library_call(builtin, 'get-atoms', [1], '@doc', '@doc', [x(noeval,eager,[])], x(noeval,eager,[])), program).
371-
'mc__1_1_get-atoms'(Space,Atoms) :- metta_atom(Space, Atoms).
364+
transpiler_predicate_store(builtin, 'add-atom', [2], '@doc', '@doc', [x(doeval,eager,[]), x(noeval,eager,[])], x(doeval,eager,[])).
365+
'mc__1_2_add-atom'(Space,PredDecl,[]) :- convert_space(Space,Space1),!,A=metta_atom_asserted(Space1,PredDecl),(call(A) -> true ; assertz(A)).
366+
'mc__1_2_add-atom'(Space,PredDecl,TF) :- convert_space(Space,Space1), %A=metta_atom_asserted(Space1,PredDecl),(call(A) -> true ; assertz(A)).
367+
do_metta(python,load,Space1,PredDecl,TF).
368+
369+
transpiler_predicate_store(builtin, 'remove-atom', [2], '@doc', '@doc', [x(doeval,eager,[]), x(noeval,eager,[])], x(doeval,eager,[])).
370+
'mc__1_2_remove-atom'(Space,PredDecl,[]) :- convert_space(Space,Space1),!,retractall(metta_atom_asserted(Space1,PredDecl)).
371+
'mc__1_2_remove-atom'(Space,PredDecl,TF) :- convert_space(Space,Space1), %A=metta_atom_asserted(Space1,PredDecl),(call(A) -> true ; assertz(A)).
372+
do_metta(python,unload,Space1,PredDecl,TF).
373+
374+
transpiler_predicate_store(builtin, 'get-atoms', [1], '@doc', '@doc', [x(noeval,eager,[])], x(noeval,eager,[])).
375+
'mc__1_1_get-atoms'(Space,Atoms) :- metta_atom(Space, Atom),unify_with_occurs_check(Atoms,Atom).
372376

373377
% This allows match to supply hits to the correct metta_atom/2 (Rather than sending a variable
374378
match_pattern(Space, Pattern):-

prolog/metta_lang/metta_python.pl

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,6 @@
910910
%
911911
% @arg O The input object to check.
912912
py_is_function(O):- \+ py_is_object(O),!,fail.
913-
%py_is_function(PyObject) :- maybe_py_deref(PyObject,PyObject2),!,py_is_function(PyObject2).
914913
py_is_function(PyObject) :-
915914
py_type(PyObject, Type),
916915
py_is_method_type(Type),!.
@@ -2037,29 +2036,25 @@
20372036
% ?- rust_to_pl([rust_atom1, rust_atom2], PrologTerm).
20382037
%
20392038
rust_to_pl(L,P):- var(L),!,L=P.
2040-
% nb_current(last_debug_info, debug_info(always(porting), hyperon_throws_error(should_be(number, W)))), py_call(W:get_object(),O),py_call(O:value,OO).
20412039
% rust_to_pl([],P):- !,P=[].
20422040
rust_to_pl(L,P):- is_list(L),!,maplist(rust_to_pl,L,P).
20432041
rust_to_pl(R,P):- compound(R),!,compound_name_arguments(R,F,RR),maplist(rust_to_pl,RR,PP),
20442042
compound_name_arguments(P,F,PP).
20452043
rust_to_pl(R,P):- \+ py_is_object(R),!,P = R.
2046-
2047-
% rust_to_pl(R,PT):- py_type(R,'GroundedAtom'), py_call(W:get_grounded_type(),O), py_call(repr(O),OO).
2048-
2049-
rust_to_pl(R,P):- py_type(R,'ValueObject'),py_ocall(R:'value',L),!,rust_to_pl(L,P).
2050-
rust_to_pl(R,PT):-
2051-
py_type(R,'GroundedAtom'),
2052-
py_ocall(R:get_grounded_type(),T),
2053-
rust_to_pl(T,TT),
2054-
py_ocall(R:get_object(),L), L\==R,
2055-
rust_to_pl(L,P),
2056-
combine_term_l(TT,P,PT), !.
20572044
rust_to_pl(R,P):- py_type(R,'ExpressionAtom'),py_mcall(R:get_children(),L),!,maplist(rust_to_pl,L,P).
20582045
rust_to_pl(R,P):- py_type(R,'SymbolAtom'),py_acall(R:get_name(),P),!.
20592046
rust_to_pl(R,P):- py_type(R,'VariableAtom'),py_scall(R:get_name(),N),!,as_var(N,P),!.
20602047
%rust_to_pl(R,P):- py_type(R,'VariableAtom'),py_acall(R:get_name(),N),!,atom_concat('$',N,P).
20612048
rust_to_pl(R,N):- py_type(R,'OperationObject'),py_acall(R:name(),N),!,cache_op(N,R).
20622049
rust_to_pl(R,P):- py_type(R,'SpaceRef'),!,P = R.
2050+
rust_to_pl(R,P):- py_type(R,'ValueObject'),py_ocall(R:'value'(),L),!,rust_to_pl(L,P).
2051+
rust_to_pl(R,PT):-
2052+
py_type(R,'GroundedAtom'),
2053+
py_ocall(R:get_grounded_type(),T),
2054+
rust_to_pl(T,TT),
2055+
py_ocall(R:get_object(),L),!,
2056+
rust_to_pl(L,P),
2057+
combine_term_l(TT,P,PT).
20632058
rust_to_pl(R,P):- py_is_list(R),py_m(R,L),R \== L,!,rust_to_pl(L,P).
20642059
rust_to_pl(R,PT):- py_type(R,T),combine_term_l(T,R,PT),!.
20652060
%rust_to_pl(R,P):- py_acall(R:'__repr__'(),P),!.
@@ -2148,9 +2143,8 @@
21482143
% ?- combine_term_l('Number', 42, PrologTerm).
21492144
%
21502145
combine_term_l('OperationObject',P,P):-!.
2151-
combine_term_l(_,P,V):- py_is_object(P), py_type(P,'ValueObject'),py_call(P:value,V),!.
2152-
combine_term_l('Bool',P,P):-!.
21532146
combine_term_l('Number',P,P):-!.
2147+
combine_term_l('Bool',P,P):-!.
21542148
combine_term_l('ValueObject',R,P):-R=P,!. %rust_to_pl(R,P),!.
21552149
combine_term_l('%Undefined%',R,P):-rust_to_pl(R,P),!.
21562150
combine_term_l('hyperon::space::DynSpace',P,P):-!.

0 commit comments

Comments
 (0)