Re: differences in implementation

randomizer <[email protected]>
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Dear Abdel Ali Ed Dbali,
thank you for the answer, it helped me a lot.

Abdel Ali Ed Dbali wrote:
> 
> Quoting randomizer <[email protected]>:
> 
>>
>> I am using a simple kb from a book "Learn prolog now!",
>> wizard(ron).
>> hasWand(harry).
>> quidditchPlayer(harry).
>> wizard(X) :- hasBroom(X),hasWand(X).
>> hasBroom(X) :- quidditchPlayer(X).
>>
>> gnu prolog answers question wizard(harry).  "no", and swi prolog answers
>> "yes".
>> anyone has an idea why does it happen?
>> --
> 
> Hi,
> 
> GnuProlog is very close to ISO prolog in most of its concepts. In ISO
> prolog, the clauses of a predicate P/N must be contiguous!
> In you example, wizard/1 is not. That's why the second clause was ignored.
> 
> | ?- consult('user').
> compiling user for byte code...
> wizard(ron).
> hasWand(harry).
> quidditchPlayer(harry).
> wizard(X) :- hasBroom(X),hasWand(X).
> user:4: warning: discontiguous predicate wizard/1 - clause ignored
> hasBroom(X) :- quidditchPlayer(X).
> 
> user compiled, 6 lines read - 595 bytes written, 13840 ms
> 
> yes
> 
> ... See the WARNING above.
> 
> The listing predicate gives the first clause only.
> 
> | ?- listing(wizard).
> wizard(ron).
> 
> yes
> 
> So, you have to use the directive "contiguous" before the first clause of
> your predicate :
> 
> | ?- consult('user').
> compiling user for byte code...
> :- discontiguous(wizard/1).
> wizard(ron).
> hasWand(harry).
> quidditchPlayer(harry).
> wizard(X) :- hasBroom(X),hasWand(X).
> hasBroom(X) :- quidditchPlayer(X).
> user compiled, 7 lines read - 801 bytes written, 34422 ms
> 
> yes
> | ?- listing(wizard).
> 
> wizard(ron).
> wizard(A) :-
>          hasBroom(A),
>          hasWand(A).
> yes
> | ?- wizard(harry).
> 
> yes
> 
> Good luck.
> 
> Ali.
> 
> 
> 
> 
> _______________________________________________
> Users-prolog mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/users-prolog
> 
> 

-- 
View this message in context: http://www.nabble.com/differences-in-implementation-tf4349295.html#a12409280
Sent from the Gnu - Prolog - Users mailing list archive at Nabble.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.