25

我正在努力寻找如何在 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

4 回答 4

21

使用GNU 序言

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

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

于 2010-09-01T18:01:53.740 回答
11

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

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

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

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

$ ./hw
Hello World
$
于 2010-08-26T15:29:32.420 回答
3

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

您必须定义一个事实,即回答“hello world”。

hello('hello world').

然后,询问事实:

?- hello(X).

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

?- write('hello world'), nl.
于 2010-08-26T14:48:52.113 回答
1
writeln('hello world').
于 2010-08-26T15:17:07.060 回答