Вопрос

Я хочу загрузить это простое нечто в свой редактор:

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:-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 потому что ваша запись имеет другую арность, чем встроенная).

Также вы можете заменить "hi" с 'hi', хотя это будет работать в любом случае (но только вторая версия фактически выведет слово «привет» на экран — ваша версия выведет его как целочисленный список).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top