Привет, мир в Прологе

Я рву голову, пытаясь найти способ написать программу Hello World на Прологе. Я просто хочу создать программу, которая будет работать так:

> ./hw
Hello, world!
>

Проблема в том, что каждый отдельный пример, который я могу найти, работает в REPL, например:

?- consult(hello_world).
% hello compiled 0.00 sec, 612 bytes

Yes
?- hello_world.
Hello World!

Yes

Это то же самое, даже с примерами скомпилированного Пролога: программа по-прежнему просто падает в REPL. Это явно не очень полезно для языка «общего назначения». Итак, как мне написать традиционный Hello World?

21
задан Connor 10 May 2014 в 21:21
поделиться

3 ответа

Пролог на самом деле не язык общего назначения. Мы используем его для разработки систем искусственного интеллекта в университете.

Вам нужно определить факт, который отвечает на «привет, мир».

hello('hello world').

Затем узнайте факт:

?- hello(X).

Однако, в зависимости от компилятора PROLOG, у вас, вероятно, есть правило write(), которое вы могли бы использовать:

?- write('hello world'), nl.
2
ответ дан 29 November 2019 в 21:16
поделиться
writeln('hello world').
1
ответ дан 29 November 2019 в 21:16
поделиться

Вы можете написать свой исходный файл, чтобы запустить интерпретатор Prolog и выйти из него, когда ваш код будет выполнен. Вот пример использования SWI-Prolog:

#!/usr/bin/swipl -q -t hello_world -f

hello_world :- write('Hello World'), nl, 
               halt.

Предполагая, что вы поместили это в файл с именем 'hw' и установили права на выполнение, вы можете вызывать его так, как хотите:

$ ./hw
Hello World
$
11
ответ дан 29 November 2019 в 21:16
поделиться
Другие вопросы по тегам:

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