2010-03-31 9 views
8

मैं अपने संपादक में यह सरल कुछ लोड करना चाहता हूं:प्रोलॉग: हैलो वर्ल्ड प्रिंट करने की प्रक्रिया बनाना

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

ताकि यह "हाय" प्रिंट करता है।

मुझे क्या करना चाहिए?

मैं वर्तमान में File->New

करने की कोशिश कर रहा हूं और E:\Program Files\pl\xpce\prolog\lib

में लिखने वाली फ़ाइल सहेज रहा हूं क्वेरी करते समय:

? -क्रिट।

यह प्रिंटिंग है:

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

क्यों?

+3

वैसे, "त्रुटि संदेश" द हिचिकर गाइड टू द गैलेक्सी का संदर्भ है। – tloflin

+3

मुझे पता है। मुझे उन किताबों से प्यार है, लेकिन मुझे वह संदेश बहुत गूंगा लगता है। यह एक मजबूर और अपमानजनक मजाक है। – andandandand

+2

मजेदार हालांकि :) –

उत्तर

6

संपादित

मैं कुछ और अधिक शोध किया। स्पष्ट रूप से यह है कि जब आप इसे एक uninstantiated चर के बारे में पूछते हैं तो एसडब्ल्यूआई-प्रोलॉग करता है।

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

अद्यतन

लोअरकेस कार्यों के लिए नाम बदल रहा है। अपरकेस चर के लिए है:

helloworld.prolog:

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

तब:

$ 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. 

?- 

सूचना आपको पहले फ़ाइल से परामर्श करना है। मैंने कोशिश की और यह निश्चित रूप से काम करता है।

+0

मुझे ऐसा नहीं लगता, मैंने प्रोग्राम को लिखने के लिए बदल दिया: -write ("hi") और यह वही काम कर रहा है। – andandandand

+0

ठीक है, मैं कुछ कैसे प्रिंट करूं? मैं एक साधारण "हैलो वर्ल्ड" करना चाहता हूं। – andandandand

+0

आप अपरकेस अक्षर के साथ एक प्रक्रिया शुरू नहीं कर सकते हैं। अपना कोड 'hello_world: -write (' हैलो वर्ल्ड ') में बदलें, एनएल, असफल।' ध्यान दें कि मैं * लो-केस * अक्षर के साथ प्रक्रिया शुरू कर रहा हूं। –

2

आपको write प्रक्रिया Write नाम देने की आवश्यकता है। अपर केस प्रारंभ अक्षर चर के लिए हैं। (यदि आप इसे writeHi या कुछ ऐसा कहते हैं तो यह कम भ्रमित हो सकता है, इसलिए इसमें अंतर्निहित प्रक्रिया के समान नाम नहीं है, लेकिन यह तब भी काम करेगा जब आप इसे write कहते हैं क्योंकि आपके लेखन में एक अलग धर्मार्थ है एक में निर्मित की तुलना में)।

इसके अलावा आप "hi" को 'hi' के साथ प्रतिस्थापित करना चाहेंगे, हालांकि यह किसी भी तरह से काम करेगा (लेकिन केवल दूसरा संस्करण वास्तव में स्क्रीन पर हाय शब्द प्रिंट करेगा - आपका संस्करण इसे पूर्णांक सूची के रूप में प्रिंट करेगा)।

+0

नहीं, मैंने खंड को लिखने के लिए बदल दिया: -write ("hi")। और अब यह प्रिंटिंग है: त्रुटि: अपरिभाषित प्रक्रिया: writehello/0। मुझे लगता है कि समस्या भौतिक स्थान है जहां मैं खंड को बचा रहा हूं। बीटीडब्ल्यू, मुझे यकीन नहीं है लेकिन मुझे लगता है कि इसे "प्रक्रिया" से "खंड" कहने के लिए और अधिक सही है। – andandandand

+0

@dmindreader: ठीक है, आपको इसे आमंत्रित करने से पहले फ़ाइल को लोड करना होगा ('परामर्श')। मैं आपको गारंटी देता हूं कि यह निचले केस नाम के साथ काम करता है। मैंने वास्तव में कोशिश की। – sepp2k

संबंधित मुद्दे