Frage

Ich möchte diese einfach etwas in mein Editor laden:

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

Damit es druckt "hallo".

Was soll ich tun?

Ich versuche zur Zeit File->New

zu tun

und Speichern einer Datei mit dem Namen schreiben in E:\Program Files\pl\xpce\prolog\lib

Wenn dabei die Abfrage:

-?. Write

Es ist Druck:

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

Warum?

War es hilfreich?

Lösung

Bearbeiten

Ich habe einige mehr Forschung. Anscheinend ist das, was SWI-Prolog tut, wenn Sie es über eine instanziierte Variable fragen.

$ 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

den Namen ändern Arbeiten in Kleinbuchstaben. Versalien ist für Variablen:

helloworld.prolog:

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

Dann:

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

?- 

Beachten Sie, dass Sie die Datei zuerst konsultieren. Ich habe versucht, diese und es funktioniert sicher.

Andere Tipps

Sie müssen die Prozedur write nennen, nicht Write. Großbuchstaben Anfangsbuchstaben sind für Variablen. (Es könnte sein, weniger verwirrend, wenn man es so nennen etwas anderes wie writeHi oder etwas, so dass es nicht den gleichen Namen hat wie eine integrierte Prozedur, aber es wird immer noch funktionieren, wenn Sie es nennen write weil Ihre Schreib eine andere arity hat als die eingebaute in einem).

Auch mögen Sie vielleicht "hi" mit 'hi' ersetzen, obwohl es so oder so funktionieren wird (aber nur die zweite Version druckt tatsächlich das Wort hallo auf den Bildschirm - Ihre Version es als Integer-Liste gedruckt wird).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top