Я хочу загрузить это простое что-то в моего Редактора:
Write:-repeat,write("hi"),nl,fail.
Так, чтобы это распечатало "привет".
Что мне делать?
Я в настоящее время пытаюсь сделать File->New
и Сохранить файл под названием Вписывает E:\Program Files\pl\xpce\prolog\lib
При выполнении запроса:
? - пишут.
Это печатает:
1 ?- Write.
% ... 1,000,000 ............ 10,000,000 years later
%
% >> 42 << (last release gives the question)
Почему?
РЕДАКТИРОВАТЬ
Я провел еще несколько исследований. Очевидно, это то, что делает SWI-Prolog, когда вы спрашиваете его о неустановленной переменной.
$ 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)
?-
ОБНОВЛЕНИЕ
Изменение имени на строчные буквы работает. Прописные буквы используются для переменных:
helloworld.prolog:
helloworld:-write('Hello World!'),nl,fail.
Затем:
$ 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.
?-
Обратите внимание, что сначала вы должны обратиться к файлу. Я попробовал это, и это точно работает.
Вам нужно назвать процедуру write
, а не Write
. Начальные буквы в верхнем регистре предназначены для переменных. (Это может быть менее запутанно, если вы назовете его как-то еще, например writeHi
или что-то в этом роде, поэтому у него нет того же имени, что и у встроенной процедуры, но он все равно будет работать, когда вы его вызовете ] write
, потому что ваша запись имеет другую арность, чем встроенная).
Также вы можете заменить "привет"
на 'привет'
, хотя это будет работать в любом случае (но только вторая версия будет печатать слово привет на экране - ваша версия напечатает его как целочисленный список).