[Grand unified shell. gergo@complang.tuwien.ac.at**20090127145914] { hunk ./compiler.fs 715 - 2dup type + \ 2dup type hunk ./compiler.fs 762 +256 constant max-line +create clause-input-buf max-line chars allot + +: clauses ( -- ) + cr ." Enter clauses, one per line; empty line when you're done." cr + begin + ." > " + clause-input-buf max-line accept + ( input-len ) + dup 0<> while + clause-input-buf swap + compile + eval + repeat + drop + ; + +: queries ( -- ) + interactive-mode on + cr ." Enter queries, one per line; empty line when you're done." cr + begin + ." ?- " + clause-input-buf max-line accept + ( input-len ) + dup 0<> while + clause-input-buf swap + compile-query + eval + repeat + drop + interactive-mode off + ; + hunk ./compiler.fs 819 -s" qsort([],R,R)." compile -s" qsort([X|L],R0,R) :- split(L,X,L1,L2), qsort(L1,R0,[X|R1]), qsort(L2,R1,R)." compile bye +s" qsort([],R,R)." compile eval +s" qsort([X|L],R0,R) :- split(L,X,L1,L2), qsort(L1,R0,[X|R1]), qsort(L2,R1,R)." compile eval + +s" :- qsort([a], [], R)." compile eval +s" :- qsort([], [a,b,c], R)." compile eval +s" :- qsort([a,b,c], [], R)." compile eval +s" :- qsort([b,a,c], [], R)." compile eval +s" :- compare_terms(Y,a,b)." compile eval + +\ shell + + +s" member(X,[X|_])." compile eval +s" member(X,[_|L]) :- member(X,L)." compile eval +s" :- member(X,[a,b,c])." compile eval hunk ./compiler.fs 835 -s" :- compare_terms(Y,a,b)." compile eval bye }