Path: utzoo!yunexus!geac!syntron!jtsv16!uunet!mcvax!prlb2!kulcs!bimbart From: bimbart@kulcs.uucp (Bart Demoen) Newsgroups: comp.lang.prolog Subject: !/metacall/metainterpreter Message-ID: <1435@kulcs.kulcs.uucp> Date: 12 Sep 88 11:55:25 GMT Article-I.D.: kulcs.1435 Reply-To: bimbart@kulcs.UUCP (Bart Demoen) Organization: Katholieke Universiteit Leuven, Dept. Computer Science Lines: 29 This is a reply to article <358@quintus.UUCP> (R. O'Keefe) whose author does not understand why the mentioned metainterpreter does not work for programs containing metacall if ! does cut outside the scope of call/1; so, I will show it: first of all, the metainterpreter does not handle builtinpredicates, so one has to add a rule like: prove(Goal) :- builtin(Goal) , ! , call(Goal) . suppose there are two definitions of rule/4: rule(a(X),[],0,[call(X)]) . rule(a(X),[],0,[write('not cut away')]) . and execute the query ?- prove(a(!)) . the result is the same is for the program a(X) :- call(X) . a(X) :- write('not cut away') . and query ?- a(!) . only if !/0 does NOT cut outside call/1