2013-01-17 12 views
5

Sono nuovo al prolog e voglio salvare tutte le query in un file invece di scriverle a mano.come posso creare risultati di query di stampa prolog quando si esegue uno script prolog

ho questi fatti in facts.pl:

likes(wallace, cheese). 
likes(grommit, cheese). 
likes(wendolene, sheep). 

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z). 

Dopo aver letto la risposta di this question, vengo con il seguente codice queries.pl:

main :- 
    write(likes(wallace, cheese)), 
    halt. 

:- initialization(['facts.pl']). 
:- initialization(main). 

qui voglio esaminare se likes(wallace, cheese) stive , quello che mi aspettavo sta producendo qualcosa come yes o no ma l'uscita effettiva è likes(wallace, cheese)

Googled molto e tentato

X = likes(wallace, cheese), write(X).

X is likes(wallace, cheese), write(X).

X := likes(wallace, cheese), write(X).

ma nessuno di loro funziona.

Potrebbe essere una domanda davvero facile per te, ma non ho idea di come fare le cose per bene.

BTW, sto usando GNU Prolog 1.4.1

risposta

3

Credo che avete bisogno di un modo per 'tag' ogni query: ecco un modo semplice

query(likes(wallace, cheese)). 
query(likes(mickey, whisky)). 

% service predicates, check the library and use that if available 
forall(X,Y) :- \+ (X, \+ Y). 
writeln(T) :- write(T), nl. 

main :- 
    forall(query(Q), (Q -> writeln(yes:Q) ; writeln(no:Q))), 
    halt.