I'm tearing my hair out trying to find how to just write a Hello World program in Prolog. I just want to create a program that runs like so:

> ./hw Hello, world! > 

The problem is that every single example I can find works in a REPL, like so:

?- consult(hello_world). % hello compiled 0.00 sec, 612 bytes Yes ?- hello_world. Hello World! Yes 

This is the same even with examples of compiled Prolog: the program still just drops into a REPL. This is obviously not much use for a "general-purpose" language. So, how do I write the traditional Hello World?

2

4 Answers

Using GNU Prolog:

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

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

1

You can write your source file to both launch the Prolog interpreter and to quit it when your code is done running. Here is an example using SWI-Prolog:

#!/usr/bin/swipl -q -t hello_world -f hello_world :- write('Hello World'), nl, halt. 

Assuming you put this in a file named 'hw', and set the executable permission, you can call it like you want to:

$ ./hw Hello World $ 
1

Prolog is not really a general purpose language. We use it to design artificial intelligence systems at university.

You'd have to define a fact, that answers "hello world".

hello('hello world'). 

Then, inquire the fact:

?- hello(X). 

However, depending on the PROLOG compiler, you probably have a write() rule, that you could use:

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.