क्या इसके ./2 प्रारूप में प्रोलॉग सूची प्रदर्शित करना संभव है, उदा।अपनी 'कच्ची' में एक सूची प्रदर्शित करें ./2 प्रारूप
सूची के लिए:
L = .(a, .(b, .(c, []))).
क्या इसके ./2 प्रारूप में प्रोलॉग सूची प्रदर्शित करना संभव है, उदा।अपनी 'कच्ची' में एक सूची प्रदर्शित करें ./2 प्रारूप
सूची के लिए:
L = .(a, .(b, .(c, []))).
आम तौर पर, write_canonical(List)
या ?- write_term(List, [quoted(true), ignore_ops(true)])
के रूप में टिप्पणी में कहा,:
| ?- L=[a,b,c].
L = [a,b,c] ?
yes
वहाँ प्रदर्शित करने के लिए एक साधन है। चूंकि SWI-Prolog do things differently करने का फैसला किया, यह काफी अच्छा नहीं है:
?- write_canonical([a]).
[a]
true.
?- write_term([a], [quoted(true), ignore_ops(true)]).
[a]
true.
?- write_term([a], [dotlists(true)]).
.(a,[])
true.
documentation on write_term/2
देखें, विकल्प brace_terms(Bool)
और dotlists(Bool)
पर ध्यान देना। लेकिन सावधान रहें: यदि आप सामान्य रूप से एसडब्ल्यूआई-प्रोलॉग 7 शुरू करते हैं, तो ./2
सूची फ़ैक्टर नहीं है!
?- L = .(a, []).
ERROR: Type error: `dict' expected, found `a' (an atom) % WHAT?
?- L = '[|]'(a, []).
L = [a].
आप swipl --traditional
के साथ शुरू करते हैं, बातें फिर से सामान्य हो, एक तरह से कर रहे हैं:
$ swipl --traditional
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.3.4-32-g9311e51)
Copyright (c) 1990-2015 University of Amsterdam, VU 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).
?- L = .(a, []).
L = [a].
तुम अब भी write_canonical(List)
या write_term(List, [quoted(true), ignore_ops(true)])
उपयोग नहीं कर सकते।
विवरण और तर्क के लिए एसडब्ल्यूआई-प्रोलॉग दस्तावेज़ के लिंक किए गए अनुभाग को पढ़ें। एक सलाह के रूप में, यदि आप SWI-Prolog 7 को डिफ़ॉल्ट रूप से SWI-Prolog 7 में उपयोग करने का निर्णय लेते हैं और केवल write_term(List, [dotlists(true)])
का उपयोग करते हैं, तो आपको किसी अन्य Prolog कार्यान्वयन के साथ संवाद करने की आवश्यकता है। सामान्य सूची नोटेशन, [a, b, ...]
अधिकांश पारंपरिक स्थितियों में काफी अच्छा होना चाहिए।
किसी भी आईएसओ-अनुरूप प्रणाली में 'write_canonical/1' देखें! 'write_canonical/1' हर बार जब आप तर्कसंगत शब्दों के बारे में संदेह करते हैं तो आपको बहुत ही उपयोगी लगता है। एसआईसीस्टस प्रोलॉग के साथ उदाहरण: '? - write_canonical ([ए, बी, सी])। ', Yieding:' '।' (ए, '।' (बी, '। (सी, [])))। डेटा एक्सचेंज के लिए भी बहुत मूल्यवान भविष्यवाणी, जिसका उद्देश्य वास्तव में कैननिकल प्रतिनिधित्व उत्पन्न करना है जो पार्स करना आसान है। – mat
एल = [ए, बी, सी], write_canonical (एल)। एक इलाज किया! मैं इस समय sicstus का उपयोग कर रहा हूँ, कभी-कभी घर पर swi। मुझे आश्चर्य है कि एक ही अंत प्राप्त करने के लिए कोई अन्य साधन हैं? – bph
'write_canonical/1' इसे करने का मानक और सबसे अच्छा तरीका है। आप निश्चित रूप से 'Arg/3', '= ../2' आदि के साथ शब्द निरीक्षण और अपघटन का उपयोग करके स्वयं को कार्यान्वित कर सकते हैं। – mat