tutorial swi mundo hola ejemplos conocimiento prolog read-eval-print-loop

swi - prolog tutorial



Hola mundo en Prolog (4)

Prólogo no es realmente un lenguaje de propósito general . Lo usamos para diseñar sistemas de inteligencia artificial en la universidad.

Tendrías que definir un hecho, que responde "hola mundo".

hello(''hello world'').

Entonces, pregunte el hecho:

?- hello(X).

Sin embargo, dependiendo del compilador de PROLOG, probablemente tenga una regla de write() que podría usar:

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

Me estoy arrancando el pelo tratando de encontrar la forma de escribir un programa Hello World en Prolog. Solo quiero crear un programa que funcione así:

> ./hw Hello, world! >

El problema es que cada ejemplo que puedo encontrar funciona en un REPL, así:

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

Esto es lo mismo incluso con ejemplos de Prolog compilado: el programa todavía cae en un REPL. Esto obviamente no es de mucha utilidad para un lenguaje de "propósito general". Entonces, ¿cómo escribo el tradicional Hello World?


Puede escribir su archivo de origen tanto para iniciar el intérprete de Prolog como para salir de él cuando su código haya terminado de ejecutarse. Aquí hay un ejemplo usando SWI-Prolog:

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

Suponiendo que coloques esto en un archivo llamado ''hw'' y configures el permiso ejecutable, puedes llamarlo como quieras:

$ ./hw Hello World $


Usando GNU Prolog :

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

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


writeln(''hello world'').