2010-03-31 10 views
8

Quiero cargar este sencillo algo en mi Editor:Prolog: Realización de un procedimiento para imprimir Hello World

Write:-repeat,write("hi"),nl,fail. 

para que se imprima "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

Al hacer la consulta:

-Escribir?.

Es la impresión:

1 ?- Write. 
% ... 1,000,000 ............ 10,000,000 years later 
% 
%  >> 42 << (last release gives the question) 

¿Por qué?

+3

Por cierto, ese "mensaje de error" es una referencia a The Hitchhiker's Guide To The Galaxy. – tloflin

+3

Lo sé. Me encantan esos libros, pero encuentro ese mensaje bastante tonto. Es una broma forzada y ofuscadora. – andandandand

+2

Aunque gracioso :) –

Respuesta

6

EDITAR

he hecho un poco más investigación. Aparentemente esto es lo que hace SWI-Prolog cuando le preguntas sobre una variable desinstalada.

$ 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) 
?- 

ACTUALIZACIÓN

Cambiar el nombre a las obras minúsculas. Mayúscula es para las variables:

helloworld.prolog:

helloworld:-write('Hello World!'),nl,fail. 

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.

+0

No lo creo, cambié el programa a Write: -write ("hola") y está haciendo lo mismo. – andandandand

+0

Muy bien, ¿cómo imprimo algo? Quiero hacer un simple "hola mundo". – andandandand

+0

No puede iniciar un procedimiento con una letra mayúscula. Cambie su código a 'hello_world: -write ('hello world'), nl, fail'. Tenga en cuenta que estoy comenzando el procedimiento con una letra * minúscula *. –

2

Debe indicar el procedimiento write, no Write. Las letras de inicio en mayúsculas son para las variables. (Puede ser menos confuso si lo llama de otra manera como writeHi o algo así, por lo que no tiene el mismo nombre que un procedimiento incorporado, pero aún funcionará cuando lo llame write porque su escritura tiene una aridad diferente que el construido en uno).

También es posible que desee reemplazar "hi" con 'hi', aunque funcionará de cualquier manera (pero solo la segunda versión realmente imprimirá la palabra hi en la pantalla; su versión la imprimirá como una lista entera).

+0

Nah, cambié la cláusula para writehello: -write ("hola"). y ahora está imprimiendo: ERROR: Procedimiento no definido: writehello/0. Creo que el problema es la ubicación física donde guardo la cláusula. Por cierto, no estoy seguro, pero creo que es más correcto llamarlo "cláusula" que "procedimiento". – andandandand

+0

@dmindreader: Bueno, tienes que cargar ('consultar') el archivo antes de intentar invocarlo. Te garantizo que funciona con el nombre minúsculo. De hecho, lo intenté. – sepp2k