Question

Je veux charger cette simple quelque chose dans mon éditeur:

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

Alors qu'il imprime "salut".

Que dois-je faire?

J'essaie actuellement de faire File->New

et enregistrement d'un fichier nommé Ecrire dans E:\Program Files\pl\xpce\prolog\lib

Lorsque vous effectuez la requête:

-. Ecrire

Il est l'impression:

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

Pourquoi?

Était-ce utile?

La solution

EDIT

Je l'ai fait quelques recherches. Apparemment, c'est ce que SWI-Prolog fait quand vous demandez au sujet d'une variable non.

$ 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)
?- 

UPDATE

Modification du nom des œuvres minuscules. Majuscules est pour les variables:

helloworld.prolog:

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

Alors:

$ 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.

?- 

Notez que vous devez consulter d'abord le fichier. J'ai essayé cela et il fonctionne bien sûr.

Autres conseils

Vous devez nommer la procédure write, non Write. majuscules lettres de départ sont des variables. (Il est peut-être moins confus si vous appelez quelque chose d'autre comme writeHi ou quelque chose, il n'a pas le même nom que d'une procédure intégrée, mais il fonctionne toujours lorsque vous l'appelez write parce que votre écriture a un autre arity que le bâti dans une).

Aussi, vous pouvez remplacer "hi" avec 'hi', mais il fonctionnera de toute façon (mais seulement la deuxième version sera effectivement imprimer le mot salut à l'écran - votre version imprimera comme une liste d'entiers)

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top