Пролог: Создание процедуры для печати Привет Мира

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

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)

Почему?

10
задан false 31 December 2014 в 17:10
поделиться

2 ответа

РЕДАКТИРОВАТЬ

Я провел еще несколько исследований. Очевидно, это то, что делает 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.

?- 

Обратите внимание, что сначала вы должны обратиться к файлу. Я попробовал это, и это точно работает.

9
ответ дан 4 December 2019 в 00:23
поделиться

Вам нужно назвать процедуру write , а не Write . Начальные буквы в верхнем регистре предназначены для переменных. (Это может быть менее запутанно, если вы назовете его как-то еще, например writeHi или что-то в этом роде, поэтому у него нет того же имени, что и у встроенной процедуры, но он все равно будет работать, когда вы его вызовете ] write , потому что ваша запись имеет другую арность, чем встроенная).

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

3
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: