2015-07-01 17 views

risposta

7

Per cominciare, lo standard ISO (ISO/IEC 13211-1: 1995) non definisce un ciclo di primo livello. In 1 Campo di applicazione si legge:

NOTA — Questa parte della norma ISO/IEC 13211 non specifica:

...

f) l'ambiente utente (anello livello superiore, debugger, biblioteca
sistema, editor, compilatore ecc.) di un processore Prolog.

Tradizionalmente, la risposta di una query è stata risolta con sì o no. In caso di sì, sono state mostrate le sostituzioni delle risposte, se presenti.

Oggi, con sempre più limitazioni presenti nelle risposte, il tradizionale ciclo di toplevel diventa un po 'macchinoso da utilizzare. Qual è la risposta corretta a ?- dif(X,a).? Non può essere un , potrebbe essere un forse, che è stato utilizzato prima da Jaffar et al.s CLP(R). Ma molto spesso si vuole riutilizzare la risposta.

L'idea in SWI è di produrre testo come risposta in modo da poterlo incollare per ottenere lo stesso risultato. In questo modo la sintassi delle risposte è specificata in una certa misura - deve essere un testo Prolog valido.

Quindi, se non c'è più sì, perché non dovrebbe esserci? Per questo motivo SWI fornisce false. come risposta. Prima della SWI, Prolog IV rispondeva allo false. Nota ad esempio il seguente punto di arresto in SWI:

?- true; false. 
true ; 
false. 

Quindi anche questo piccolo dettaglio viene mantenuto nelle risposte. Mentre in Prolog IV questo è collassato in true perché Prolog IV mostra tutte le risposte in un colpo solo.

?- true ; false. 

true. 

Per ulteriori informazioni sulle risposte, see this.

+6

Questa risposta è stata buona fino a quando ho guardato il tuo nome utente, poi è diventato sorprendente. –

+0

@false, grazie per la tua risposta, ma ancora non riesco a capire il punto. Per semplici asserzioni come 'human (socrates) .'' human (aristotle) ​​.' e 'athenian (socrates) .' Mi aspetterei una risposta' yes' e 'no' invece di una' true-flase' alla domanda ' ? - athenian (socrates) .' e '? -athenian (aristotle) ​​.' –

+0

@EnricoPirani: Perché non rispondere' true'? o 'falso'? Molti umani rispondono così: * Socrate è umano? Vero! Prolog è umano? False! * Oppure '3> 2'? 'True'! – false

Problemi correlati