Prolog中的Hello世界

时间:2010-08-26 14:34:22

标签: prolog read-eval-print-loop

我正在试图找到如何在Prolog中编写Hello World程序。我只是想创建一个像这样运行的程序:

> ./hw
Hello, world!
>

问题是我能找到的每个例子都在REPL中工作,如下所示:

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

Yes
?- hello_world.
Hello World!

Yes

即使编译Prolog的例子也是如此:程序仍然只是一个REPL。对于“通用”语言来说,这显然没什么用处。那么,我该如何编写传统的Hello World?

4 个答案:

答案 0 :(得分:17)

使用GNU Prolog

$ cat hello.pl 
:- initialization(main).
main :- write('Hello World!'), nl, halt.

$ gplc hello.pl $ ./hello
Hello World!

答案 1 :(得分:11)

您可以编写源文件以启动Prolog解释器并在代码运行完毕后退出。以下是使用SWI-Prolog的示例:

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

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

假设你把它放在一个名为'hw'的文件中,并设置了可执行权限,你可以像你想要的那样调用它:

$ ./hw
Hello World
$

答案 2 :(得分:2)

Prolog并非真正的通用语言。我们用它来设计大学的人工智能系统。

你必须定义一个回答“你好世界”的事实。

hello('hello world').

然后,询问事实:

?- hello(X).

但是,根据PROLOG编译器,您可能有一个write()规则,您可以使用:

?- write('hello world'), nl.

答案 3 :(得分:1)

writeln('hello world').