jupyter
This commit is contained in:
@@ -37,9 +37,9 @@
|
||||
%% dictionary, Examples
|
||||
%%
|
||||
%%
|
||||
yapi_query( VarNames, Self ) :-
|
||||
yapi_query( VarNames, Caller ) :-
|
||||
show_answer(VarNames, Dict),
|
||||
Self.bindings := Dict.
|
||||
Caller.bindings := Dict.
|
||||
|
||||
|
||||
|
||||
@@ -74,12 +74,9 @@ argi(N,I,I1) :-
|
||||
python_query( Caller, String ) :-
|
||||
python_query( Caller, String, _Bindings).
|
||||
|
||||
user:user_python_query( Caller, String, Bindings ) :-
|
||||
python_query( Caller, String, _Bindings).
|
||||
|
||||
python_query( Caller, String, Bindings ) :-
|
||||
atomic_to_term( String, Goal, VarNames ),
|
||||
query_to_answer( Goal, VarNames, Status, Bindings),
|
||||
query_to_answer( user:Goal, VarNames, Status, Bindings),
|
||||
Caller.q.port := Status,
|
||||
output(Caller, Bindings).
|
||||
|
||||
@@ -87,12 +84,84 @@ python_query( Caller, String, Bindings ) :-
|
||||
%% write_query_answer( Bindings ),
|
||||
%% fail.
|
||||
output( Caller, Bindings) :-
|
||||
maplist(into_dict(Caller),Bindings).
|
||||
copy_term( Bindings, Bs),
|
||||
simplify(Bs, 1, Bss),
|
||||
numbervars(Bss, 0, _),
|
||||
maplist(into_dict(Caller),Bss).
|
||||
|
||||
simplify([],_,[]).
|
||||
simplify([X=V|Xs], [X=V|NXs]) :-
|
||||
var(V),
|
||||
!,
|
||||
X=V,
|
||||
simplify(Xs,NXs).
|
||||
simplify([X=V|Xs], I, NXs) :-
|
||||
var(V),
|
||||
!,
|
||||
X=V,
|
||||
simplify(Xs,I,NXs).
|
||||
simplify([X=V|Xs], I, [X=V|NXs]) :-
|
||||
!,
|
||||
simplify(Xs,I,NXs).
|
||||
simplify([G|Xs],I, [D=G|NXs]) :-
|
||||
I1 is I+1,
|
||||
atomic_concat(['__delay_',I,'__'],D),
|
||||
simplify(Xs,I1,NXs).
|
||||
|
||||
|
||||
bv(V,I,I1) :-
|
||||
atomic_concat(['__',I],V),
|
||||
I1 is I+1.
|
||||
|
||||
into_dict(D,V0=T) :-
|
||||
D.q.answer[V0] := T.
|
||||
listify(T,L),
|
||||
D.q.answer[V0] := L.
|
||||
|
||||
listify('$VAR'(Bnd), V) :-
|
||||
!,
|
||||
listify_var(Bnd, V).
|
||||
listify([A|As], V) :-
|
||||
!,
|
||||
maplist(listify,[A|As], V).
|
||||
listify(A:As, A:Vs) :-
|
||||
(atom(A);string(A)),
|
||||
!,
|
||||
maplist(listify,As, Vs).
|
||||
listify(WellKnown, V) :-
|
||||
WellKnown=..[N|As],
|
||||
length(As,Sz),
|
||||
well_known(N,Sz),
|
||||
!,
|
||||
maplist(listify,As, Vs),
|
||||
V =.. [N|Vs].
|
||||
|
||||
listify('$VAR'(Bnd), V) :-
|
||||
!,
|
||||
listify_var(Bnd, V).
|
||||
listify(T, t(S,V)) :-
|
||||
T =.. [S,A|As],
|
||||
!,
|
||||
maplist(listify, [A|As], Vs),
|
||||
V =.. [t|Vs].
|
||||
listify(S, S).
|
||||
|
||||
listify_var(I, S) :-
|
||||
I >= 0,
|
||||
I =< 26,
|
||||
!,
|
||||
V is 0'A+I,
|
||||
string_codes(S, [V]).
|
||||
listify_var(I, S) :-
|
||||
I < 0,
|
||||
I >= -26,
|
||||
!,
|
||||
V is 0'A+I,
|
||||
string_codes(S, [0'_+V]).
|
||||
listify_var(S, S).
|
||||
|
||||
well_known(+,2).
|
||||
well_known(-,2).
|
||||
well_known(*,2).
|
||||
well_known(/,2).
|
||||
well_known((','),2).
|
||||
|
||||
|
@@ -4,7 +4,7 @@ asserta = namedtuple('asserta', 'clause')
|
||||
assertz = namedtuple('assertz', 'clause')
|
||||
bindvars = namedtuple('bindvars', 'list')
|
||||
compile = namedtuple('compile', 'file')
|
||||
compdletionsile = namedtuple('completions', 'text self')
|
||||
completions = namedtuple('completions', 'text self')
|
||||
dbms = namedtuple('dbms', 'filedbms')
|
||||
errors = namedtuple('errors', 'fileng engee')
|
||||
foreign = namedtuple('foreign', 'filedbms')
|
||||
@@ -15,10 +15,13 @@ ostreams = namedtuple('ostreams', ' text')
|
||||
prolog_library=namedtuple('prolog_library', 'listfiles')
|
||||
python_query = namedtuple('python_query', 'engine query')
|
||||
set_prolog_flag = namedtuple('set_prolog_flag', 'flag new_value')
|
||||
current_prolog_flag = namedtuple('current_prolog_flag', 'flag value')
|
||||
show_answer = namedtuple('show_answer', 'vars dict')
|
||||
streams = namedtuple('streams', 'text')
|
||||
v = namedtuple('_', 'slot')
|
||||
v0 = namedtuple('v', 'slot')
|
||||
yap_flag = namedtuple('yap_flag', 'flag value new_value')
|
||||
show_answer = namedtuple('show_answer', 'vars dict')
|
||||
yap_query = namedtuple('yap_query', 'query owner')
|
||||
yapi_query = namedtuple('yapi_query', 'vars dict')
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
u
|
||||
|
||||
/**
|
||||
* @file jupyter.yap
|
||||
*
|
||||
@@ -57,7 +57,6 @@ next_streams( _Caller, answer, _Bindings ) :-
|
||||
% Caller.answer := Bindings,
|
||||
!.
|
||||
next_streams(_, redo, _ ) :-
|
||||
streams(true),
|
||||
!.
|
||||
next_streams( _, _, _ ) :-
|
||||
streams(false).
|
||||
@@ -74,7 +73,7 @@ jupyter_cell( _Caller, _, Line , _) :-
|
||||
jupyter_cell(Caller, _, Line, Bindings ) :-
|
||||
Query = Caller,
|
||||
catch(
|
||||
user:user_python_query(Query,Line, Bindings),
|
||||
python_query(Query,Line, Bindings),
|
||||
error(A,B),
|
||||
system_error(A,B)
|
||||
).
|
||||
@@ -103,11 +102,12 @@ jupyter_consult(Cell) :-
|
||||
(
|
||||
Options = [],
|
||||
open_mem_read_stream( Cell, Stream),
|
||||
load_files(Stream,[stream(Stream)| Options])
|
||||
load_files(user:Stream,[stream(Stream)| Options])
|
||||
),
|
||||
error(A,B),
|
||||
(close(Stream), system_error(A,B))
|
||||
(close(Stream), system_error(A,B))
|
||||
),
|
||||
close(Stream),
|
||||
fail.
|
||||
jupyter_consult(_Cell).
|
||||
|
||||
@@ -124,7 +124,7 @@ blank(Text) :-
|
||||
|
||||
|
||||
streams(false) :-
|
||||
close(user_input),
|
||||
close(user_input),
|
||||
close(user_output),
|
||||
close(user_error).
|
||||
streams( true) :-
|
||||
|
@@ -72,7 +72,8 @@ jupyter(En),
|
||||
close_esh( _Engine , Stream ) :-
|
||||
retractall(jupyter(_)),
|
||||
assertz(jupyter([])),
|
||||
close(Stream).
|
||||
close(Stream),
|
||||
python_clear_errors.
|
||||
|
||||
|
||||
|
||||
|
@@ -560,7 +560,7 @@ class YAPRun(InteractiveShell):
|
||||
self.iterations = 0
|
||||
pg = jupyter_query(self,program,squery)
|
||||
self.q = Query(self.engine, pg)
|
||||
while self.q.next():
|
||||
for v in self.q:
|
||||
self.iterations += 1
|
||||
o = '[ '
|
||||
o += str(self.iterations )
|
||||
@@ -704,39 +704,39 @@ class YAPRun(InteractiveShell):
|
||||
self.shell.displayhook.exec_result = result
|
||||
if self.syntaxErrors(cell):
|
||||
result.result = []
|
||||
return
|
||||
return result
|
||||
has_raised = False
|
||||
try:
|
||||
if not cell.strip('\n \t'):
|
||||
return result
|
||||
builtin_mod.input = input
|
||||
self.shell.input = input
|
||||
self.engine.mgoal(streams(True),"user", True)
|
||||
if cell.strip('\n \t'):
|
||||
#create a Trace object, telling it what to ignore, and whether to
|
||||
# do tracing or line-counting or both.
|
||||
# tracer = trace.Trace(
|
||||
# ignoredirs=[sys.prefix, sys.exec_prefix],
|
||||
# trace=1,
|
||||
# count=0)
|
||||
#
|
||||
#create a Trace object, telling it what to ignore, and whether to
|
||||
# do tracing or line-counting or both.
|
||||
# tracer = trace.Trace(
|
||||
# ignoredirs=[sys.prefix, sys.exec_prefix],
|
||||
# trace=1,
|
||||
# count=0)
|
||||
#
|
||||
|
||||
# def f(self, cell, state):
|
||||
# state = self.jupyter_query( cell )
|
||||
# def f(self, cell, state):
|
||||
# state = self.jupyter_query( cell )
|
||||
|
||||
# run the new command using the given tracer
|
||||
#
|
||||
# tracer.runfunc(f,self,cell,state)
|
||||
answers = self.prolog( cell, result )
|
||||
# state = tracer.runfunc(hist
|
||||
# er_query( self, cell ) )
|
||||
self.shell.last_execution_succeeded = True
|
||||
answers = self.prolog( cell, result )
|
||||
# state = tracer.runfunc(hist
|
||||
# er_query( self, cell ) )
|
||||
except Exception as e:
|
||||
has_raised = True
|
||||
try:
|
||||
(etype, value, tb) = e
|
||||
traceback.print_exception(etype, value, tb)
|
||||
self.engine.mgoal(streams(False),"user", True)
|
||||
except:
|
||||
print(e)
|
||||
pass
|
||||
|
||||
self.shell.last_execution_succeeded = not has_raised
|
||||
|
||||
|
Reference in New Issue
Block a user