2012-10-16 12 views
10

Non riesco proprio a capire come stampare il valore di X. Ecco quello che ho provato nel toplevel:prolog - stampa il valore di una variabile

59 ?- read(X). 
|: 2. 
X = 2. 

60 ?- write(X). 
_G253 
true. 

Che cosa è _G253? Non voglio il numero di indice, voglio il valore X è legato a. Cosa devo fare per stampare il valore di X?

+0

possibile duplicato del [Nomi di variabili a SWI Prolog] (http://stackoverflow.com/questions/9358623/variable-names-in-swi-prolog) – false

risposta

13

Quando si digita write(X). al prompt interattivo e nient'altro, X non è associato a nulla in particolare. Se si desidera leggere X dall'utente e quindi scriverlo, provare a digitare read(X), write(X). al prompt.

?- read(X), write(X). 
|: 28. 
28 
X = 28. 

SWI Prolog mantiene una cronologia delle associazioni di livello superiore; digitare help. per entrare nel manuale, quindi cercare bindings o semplicemente passare alla sezione 2.8 del manuale "Riutilizzo dei collegamenti di livello superiore". Qui puoi apprendere che viene mantenuto il valore più recente di qualsiasi variabile associata a un obiettivo di primo livello e che può essere riferito al nome della variabile, preceduto dal simbolo del dollaro. Così interazioni come la seguente sono possibili:

?- read(X). 
|: 42. 
X = 42. 

?- write($X). 
42 
true. 

Ma un obiettivo di alto livello che accade solo ad usare il nome variabile X sarà interpretato come utilizzando una variabile fresco; fare altrimenti violerebbe la normale semantica del Prolog.

0

prolog - accetta come input e stampa il valore di una variabile.

go:- write('Enter a name'),nl, 
    read(Name),nl, 
    print(Name). 
print(Name):- write(Name),write(', Hello !!!').