Prolog: Haciendo un procedimiento para imprimir Hello World
-
23-09-2019 - |
Pregunta
Quiero cargar este sencillo algo en mi Editor:
Write:-repeat,write("hi"),nl,fail.
Así que imprime "Hola".
¿Qué debo hacer?
Actualmente estoy tratando de hacer File->New
y almacenamiento de un archivo llamado Escribir en E:\Program Files\pl\xpce\prolog\lib
Cuando se realiza la consulta:
-?. Comentario
Se impresión:
1 ?- Write.
% ... 1,000,000 ............ 10,000,000 years later
%
% >> 42 << (last release gives the question)
¿Por qué?
Solución
Editar
He hecho un poco más investigación. Al parecer, esto es lo que hace SWI-Prolog cuando se pregunta acerca de que una variable instanciado.
$ prolog
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- X.
% ... 1,000,000 ............ 10,000,000 years later
%
% >> 42 << (last release gives the question)
?-
Actualizar
Cambiar el nombre a minúsculas obras. Mayúscula es para las variables:
helloworld.prolog:
helloworld:-write('Hello World!'),nl,fail.
A continuación:
$ prolog
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- ['helloworld.prolog'].
% helloworld.prolog compiled 0.00 sec, 1,376 bytes
true.
?- helloworld.
Hello World!
false.
?-
Tenga en cuenta que usted tiene que consultar el archivo en primer lugar. Probé esto y funciona con seguridad.
Otros consejos
Se necesita un nombre a la write
procedimiento, no Write
. letras iniciales mayúsculas son para las variables. (Puede ser que sea menos confuso si llamarlo de otra manera como writeHi
o algo así, por lo que no tiene el mismo nombre que incorpora un procedimiento, pero seguirá siendo el trabajo cuando se llamaría write
debido a que su escritura tiene una aridad diferente que la construyeron en uno).
También es posible que desee reemplazar "hi"
con 'hi'
, a pesar de que va a trabajar de cualquier manera (pero sólo la segunda versión realmente imprimir la palabra hola a la pantalla - la versión imprimirá como una lista de números enteros).