Domanda

voglio caricare questa semplice qualcosa nel mio Editor:

Write:-repeat,write("hi"),nl,fail.

In modo che la stampa "hi".

Che cosa devo fare?

Al momento sto cercando di fare File->New

e salvataggio di un file chiamato scrittura in E:\Program Files\pl\xpce\prolog\lib

Quando si esegue la query:

-?. Write

E 'la stampa:

1 ?- Write.
% ... 1,000,000 ............ 10,000,000 years later
% 
%       >> 42 << (last release gives the question)

Perché?

È stato utile?

Soluzione

Modifica

Ho fatto qualche ricerca più. A quanto pare questo è ciò che SWI-Prolog fa quando si chiede che su una variabile non istanziato.

$ prolog
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- X.
% ... 1,000,000 ............ 10,000,000 years later
% 
%       >> 42 << (last release gives the question)
?- 

Aggiorna

La modifica del nome alle opere minuscole. Maiuscolo è per le variabili:

helloworld.prolog:

helloworld:-write('Hello World!'),nl,fail.

Quindi:

$ prolog
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- ['helloworld.prolog'].
% helloworld.prolog compiled 0.00 sec, 1,376 bytes
true.

?- helloworld.
Hello World!
false.

?- 

Si noti che è necessario consultare il file prima. Ho provato questo fuori e funziona di sicuro.

Altri suggerimenti

È necessario dare un nome al write procedimento, non Write. lettere maiuscole di partenza sono per le variabili. (Potrebbe essere meno confusione se lo si chiama qualcos'altro come writeHi o qualcosa, in modo da non avere lo stesso nome di una procedura di built-in, ma continuerà a funzionare quando si chiama write perché la vostra scrittura ha un diverso arity rispetto al costruito in uno).

Inoltre si potrebbe desiderare di sostituire "hi" con 'hi', anche se funziona in entrambi i casi (ma solo la seconda versione sarà effettivamente stampare la parola hi allo schermo - la versione stamperà come un elenco intero)

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top