Prolog Language
डेटा संरचनाएं
खोज…
सूचियाँ
सूची एक विशेष प्रकार का यौगिक शब्द है । सूचियाँ सम्मिलित रूप से परिभाषित की गई हैं:
- परमाणु
[]
एक सूची है, जो खाली सूची को दर्शाती है। - यदि
Ls
एक सूची है, तो शब्द'.'(L, Ls)
भी एक सूची है।
प्रोलॉग में सूचियों को आसानी से निरूपित करने के लिए एक विशेष वाक्यविन्यास है:
- सूची
'.'(a, '.'(b, '.'(c, [])))
को[a,b,c]
रूप में भी लिखा जा सकता है। - The
'.'(L, Ls)
शब्द को[L|Ls]
रूप में भी लिखा जा सकता है।
इन सूचनाओं को किसी भी तरह से जोड़ा जा सकता है। उदाहरण के लिए, शब्द [a,b|Ls]
एक सूची है यदि IF Ls
एक सूची है।
सूचियाँ बनाना
चर सूची के साथ एकीकृत शाब्दिकों की एक सूची:
?- List = [1,2,3,4].
List = [1, 2, 3, 4].
सहमति से सूची बनाना:
?- Tail = [2, 3, 4], List = [1|Tail].
Tail = [2, 3, 4],
List = [1, 2, 3, 4].
अंतर्निहित length/2
का उपयोग करके अज्ञात मूल्यों की सूची बनाना:
?- length(List,5).
List = [_G496, _G499, _G502, _G505, _G508].
चूंकि प्रोलॉग में सब कुछ एक सार में है, सूचियां विषम व्यवहार करती हैं:
?- List = [1, 2>1, this, term(X), 7.3, a-A].
List = [1, 2>1, this, term(X), 7.3, a-A].
इसका मतलब है कि एक सूची में अन्य सूचियाँ भी हो सकती हैं, जिन्हें आंतरिक सूचियाँ भी कहा जाता है:
List = [[1,2],[3,[4]]].
जोड़े
अधिवेशन के द्वारा, प्रायोजक (-)/2
का उपयोग प्रायः प्रोलॉग में तत्वों के जोड़े को दर्शाने के लिए किया जाता है। उदाहरण के लिए, शब्द -(A, B)
तत्वों A
और B
की जोड़ी को दर्शाता है। Prolog में, (-)/2
को एक infix ऑपरेटर के रूप में परिभाषित किया गया है। इसलिए, शब्द को AB
बराबर लिखा जा सकता है।
कई आमतौर पर उपलब्ध विधेय भी जोड़े को निरूपित करने के लिए इस वाक्यविन्यास का उपयोग करते हैं। इसके उदाहरण हैं keysort/2
और pairs_keys_values/3
।
एसोसिएशन की सूची
सभी गंभीर प्रोलॉग प्रणालियों में, तत्वों की एक संग्रह में रैखिक पहुंच की तुलना में तेजी से अनुमति देने के लिए एसोसिएशन सूची उपलब्ध है। ये एसोसिएशन सूची आमतौर पर एवीएल पेड़ों जैसे संतुलित पेड़ों पर आधारित होती है। एक सार्वजनिक डोमेन लाइब्रेरी है जिसे library(assoc)
कहा जाता है जो कई प्रोलॉग सिस्टम के साथ जहाज करता है और संग्रह में तत्वों को डालने, लाने और बदलने के लिए ओ (लॉग (एन)) संचालन प्रदान करता है।
शर्तें
बहुत उच्च स्तर पर, प्रोलॉग में केवल एक ही डेटा प्रकार होता है, जिसे टर्म कहते हैं। Prolog में, सभी डेटा को Prolog शब्दों द्वारा दर्शाया जाता है। शर्तों को औपचारिक रूप से परिभाषित किया गया है:
- एक परमाणु एक शब्द है। परमाणुओं के उदाहरण हैं:
x
,test
और'quotes and space'
। - एक चर एक शब्द है। चर एक बड़े अक्षर या अंडरस्कोर
_
शुरू होते हैं। - पूर्णांक और फ्लोटिंग पॉइंट नंबर शब्द हैं। उदाहरण:
42
और42.42
। - हैं: एक यौगिक पद वह पद, उपपादन द्वारा परिभाषित के रूप में इस प्रकार है
T1
,T2
, ...,T_n
शर्तों को दर्शाते हैं तो एफ (T1
,T2
, ...,T_n
) भी एक शब्द है जहां एफ के functor कहा जाता है, यौगिक शब्द।
पुस्तकालय (रिकॉर्ड) का उपयोग कर नामित क्षेत्रों के साथ शर्तें
[record][1]
पुस्तकालय नामित क्षेत्रों के साथ यौगिक शब्द बनाने की क्षमता प्रदान करता है। निर्देश :- record/1 <spec>
भविष्यवाणी के एक संग्रह के लिए संकलित करता है, जो <spec>
द्वारा परिभाषित शब्द में आरंभ, सेट और फ़ील्ड प्राप्त करता है।
उदाहरण के लिए, हम नामित फ़ील्ड x
और y
साथ एक point
डेटा संरचना को परिभाषित कर सकते हैं:
:- use_module(library(record)).
:- record point(x:integer=0,
y:integer=0).
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?- default_point(Point), point_x(Point, X), set_x_of_point(10, Point, Point1).
Point = point(0, 0),
X = 0,
Point1 = point(10, 0).
?- make_point([y(20)], Point).
Point = point(0, 20).
?- is_point(X).
false.
?- is_point(point(_, _)).
false.
?- is_point(point(1, a)).
false.
?- is_point(point(1, 1)).
true.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */