/* This is a test of how to write Pop-11 programs in Prolog (Poplog version). Run as prolog pop11_in_prolog_test.pl or poplog prolog pop11_in_prolog_test.pl See * http://zephyrfalcon.org/weblog2/arch_e10_00560.html#e562 * PLOGHELP PROLOG_LANGUAGE * PLOGHELP PLOGTOPOP This Pop-11 program was created by Hakan Kjellerstrand (hakank@gmail.com See also my Pop-11/Poplog page: http://www.hakank.org/poplog/ */ /* Switch to Pop-11 */ :- prolog_language("pop11"). /* now we are in pop11 */ define foo(a, b, c) -> result; a*b + 2*c -> result; enddefine; define big(n)->result; 2**n-1->result; enddefine; define my_member(item, list)->result; list matches [== ^item ==]->result; enddefine; /* Back to prolog */ :- prolog_language("prolog"). :- library(useful). foo(A, B, C, Result) :- prolog_eval(foo(A, B, C), Result). go :- foo(1, 2, 3, X), write(X), nl, foo(3, 4, 5, X2), write(X2), nl, prolog_eval(big(211),X3), write(X3), nl. go2 :- member(A,[1,2,3,4,5]), write(A), nl. go3 :- prolog_eval(my_member(3,[1,2,3,4,5]), X), write(X), nl, prolog_eval(my_member(13,[1,2,3,4,5]), X2), write(X2), nl. :- go. :- go2, fail. :- go3.