Я рву голову, пытаясь найти способ написать программу 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?
Пролог на самом деле не язык общего назначения. Мы используем его для разработки систем искусственного интеллекта в университете.
Вам нужно определить факт, который отвечает на «привет, мир».
hello('hello world').
Затем узнайте факт:
?- hello(X).
Однако, в зависимости от компилятора PROLOG, у вас, вероятно, есть правило write()
, которое вы могли бы использовать:
?- write('hello world'), nl.
Вы можете написать свой исходный файл, чтобы запустить интерпретатор Prolog и выйти из него, когда ваш код будет выполнен. Вот пример использования SWI-Prolog:
#!/usr/bin/swipl -q -t hello_world -f
hello_world :- write('Hello World'), nl,
halt.
Предполагая, что вы поместили это в файл с именем 'hw' и установили права на выполнение, вы можете вызывать его так, как хотите:
$ ./hw
Hello World
$