मैं प्रोलॉग के लिए नया हूं और देखा है कि 'और "अलग-अलग व्यवहार देते हैं, लेकिन क्यों उत्सुक हैं। विशेष रूप से, फ़ाइल लोड करते समय, ?- ['test1.pl'].
काम करता है, जबकि ?- ["test1.pl"].
नहीं करता है।प्रोलॉग में 'और' के बीच क्या अंतर है?
उत्तर
सिंगल उद्धृत आइटम हमेशा परमाणु होते हैं। यह मान "a" = a
साथ
atom
— :
दोहरे उद्धरण चिह्नों का अर्थ Prolog झंडा double_quotes
पर निर्भर करता है। आजकल, इसका शायद ही कभी उपयोग किया जाता है। लेकिन आपको प्रोलॉग किताबें मिलेंगी जहां ["abc.pl"]
लिखा गया है।
codes
— चरित्र कोड की एक सूची। यह अक्सर डिफ़ॉल्ट है, लेकिन यह, भी बदतर तरह
?- set_prolog_flag(double_quotes,codes). true. ?- phrase(("Ja tvoi ",("sluga"|"rabotnik"),"!"), Satz). Satz = [74,97,32,116,118,111,105,32,115,108,117,103,97,33] ; Satz = [74,97,32,116,118,111,105,32,114,97,98,111,116,110,105,107,33].
बहुत अपठनीय जवाब की ओर जाता है अगर आप ASCII परे वर्णों का उपयोग:
?- phrase(("Я твой ",("слуга"|"работник"),"!"), Satz). Satz = [1071,32,1090,1074,1086,1081,32,1089,1083,1091,1075,1072,33] ; Satz = [1071,32,1090,1074,1086,1081,32,1088,1072,1073,1086,1090,1085,1080,1082,33].
chars
— एक की एक सूची - परमाणु। इसके बारे में अधिक जानकारी के लिए See this।
?- set_prolog_flag(double_quotes,chars). true. ?- phrase(("Ja tvoi ",("sluga"|"rabotnik"),"!"), Satz). Satz = ['J',a,' ',t,v,o,i,' ',s,l,u,g,a,!] ; Satz = ['J',a,' ',t,v,o,i,' ',r,a,b,o,t,n,i,k,!]. ?- phrase(("Я твой ",("слуга"|"работник"),"!"), Satz). Satz = ['Я',' ',т,в,о,й,' ',с,л,у,г,а,!] ; Satz = ['Я',' ',т,в,о,й,' ',р,а,б,о,т,н,и,к,!].
यह नोटेशन अधिक पठनीय उत्तर देता है। यह एक और चार परमाणुओं की किसी भी सूची को मुद्रित करने के लिए डबल कोट नोटेशन का उपयोग किया जा सकता है क्योंकि यह और अधिक कॉम्पैक्टली रूप से प्रदर्शित किया जा सकता है। SICStus और SWI के लिए library(double_quotes)
है। SWI-Prolog 7 में use_module(double_quotes).
उपरोक्त उत्तर पर विस्तार के लिए धन्यवाद। – astay13
@ astay13 यह उत्तर सही है, जबकि दूसरा नहीं है। यह दूसरे जवाब पर "विस्तार" नहीं करता है। –
प्रोलॉग में स्ट्रिंग्स एकल उद्धरणों में लिखे गए हैं। डबल कोट्स में लिखी गई शर्तें तुरंत चरित्र कोड की सूची में परिवर्तित हो जाती हैं।
?- write('sdf').
sdf
true.
?- write("sdf").
[115, 100, 102]
true.
[संबंधित प्रश्न] (http://stackoverflow.com/questions/4391435/how-to-manipulate-strings-in-prolog) – CamilleLDN
* प्रोलॉग में परमाणु * एकल उद्धरण के भीतर संलग्न हैं। – Thilo
शायद एक मामूली योग्यता: परमाणु आमतौर पर लिखे जाते हैं। केवल अगर वे अन्यथा किसी और चीज के लिए गलत हो जाएंगे (जैसे उदाहरण के लिए एक चर) क्या आप उन्हें सिंगल कोट्स में संलग्न करते हैं। आप वैकल्पिक रूप से इसे हर मामले में कर सकते हैं, केवल यह व्यर्थ है। – mat
- 1. प्रोलॉग में == और = के बीच क्या अंतर है?
- 2. # {} $ {} और% {} के बीच क्या अंतर है?
- 3. के बीच क्या अंतर है:। और: आर !?
- 4. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 5. $ और $$ के बीच क्या अंतर है?
- 6. भिन्नता और '-' के बीच क्या अंतर है?
- 7. "$^एन" और "$ +" के बीच क्या अंतर है?
- 8. के बीच क्या अंतर है?
- 9. MATLAB में & &&& के बीच क्या अंतर है?
- 10. अंतर और कहां के बीच क्या अंतर है?
- 11. WinAPI में हैंडल और एचएफआईएलई के बीच क्या अंतर है?
- 12. सिम्फनी में रीडायरेक्ट और आगे के बीच क्या अंतर है?
- 13. PHP में iconv() और mb_convert_encoding() के बीच क्या अंतर है?
- 14. वेरिलोग में $ स्टॉप और $ फिनिश के बीच क्या अंतर है?
- 15. ember.js में, मिश्रण और विस्तार के बीच क्या अंतर है?
- 16. पर्ल में 'eq' और '= ~' के बीच क्या अंतर है?
- 17. गेब में, प्रदर्शित और वर्तमान के बीच क्या अंतर है?
- 18. गिट में लेखक और कमिटर के बीच क्या अंतर है?
- 19. आर में, अनलिंक और file.remove के बीच क्या अंतर है?
- 20. रेगेक्स में() और [] के बीच क्या अंतर है?
- 21. लिस्प में 'और #' के बीच क्या अंतर है?
- 22. इनलाइन और # परिभाषा के बीच अभ्यास में क्या अंतर है?
- 23. .NET में KeyValuePair और हैशटेबल के बीच क्या अंतर है?
- 24. Mercurial में, 'सिर' और 'शाखा' के बीच क्या अंतर है?
- 25. आरएसपीईसी में stub_model और mock_model के बीच क्या अंतर है?
- 26. रूबी में कक्षा और क्लास के बीच क्या अंतर है?
- 27. आईओएस में पथ और यूआरएल के बीच क्या अंतर है?
- 28. जावा में int.class और Integer.TYPE के बीच क्या अंतर है?
- 29. फ़ाइल बनाने में: = और + = के बीच क्या अंतर है?
- 30. क्लोजर में '() और (सूची) के बीच क्या अंतर है?
और बाद में, दोनों काम करते हैं और एक ही मतलब है:
आप एक पुस्तकालय के रूप में स्थापित करने
double_quotes.pl
कठिनाइयों है, तो बस इसे अपने अन्य Prolog फ़ाइलों की निर्देशिका में डाल दिया है और कहते हैं। जैसा कि कोई निश्चित रूप से इंगित करेगा, यह आईएसओ-प्रोलॉग अनुपालन व्यवहार नहीं है। और कृपया, वर्तमान में स्वीकृत उत्तर को स्वीकार न करें क्योंकि यह गलत है। –@ बोरीस: 'set_prolog_flag (double_quotes, परमाणु) के साथ' दोनों प्रश्न समान हैं जैसे कि IF/Prolog में डिफ़ॉल्ट रूप से उदाहरण दिया गया है। यहां तक कि एसडब्ल्यूआई 7 [बेहतर कर सकता है] (http://www.complang.tuwien.ac.at/ulrich/iso-prolog/SWI7_and_ISO#strings_less_non_conforming), हालांकि पूरे एसडब्ल्यूआई के अनुरूप नहीं है। – false