मैं स्कैला में एक रिलेशनल बीजगणित को एन्कोड करने का प्रयास कर रहा हूं (जो कि मेरे ज्ञान में सबसे उन्नत प्रकार की प्रणालियों में से एक है) और मुझे लगता है कि मैं कहां से प्राप्त करना चाहता हूं ।संबंधपरक बीजगणित को लागू करने के लिए भाषा विशेषताएं
जैसा कि मैं प्रोग्रामिंग भाषा डिजाइन के अकादमिक क्षेत्र के साथ अनुभव नहीं कर रहा हूं, मुझे वास्तव में पता नहीं है कि किस सुविधा को देखना है।
तो एक स्थिर रूप से सत्यापित रिलेशनल बीजगणित को लागू करने के लिए, किस भाषा की विशेषताओं की आवश्यकता होगी, और उन सुविधाओं में कौन सी भाषा है?
कुछ आवश्यकताओं: ए टुपल नाम से निर्दिष्ट प्रकार के मानों के प्रश्न में प्रश्नों के प्रश्न में प्रश्नों के प्रश्नों के लिए वैध नामों के स्थिर रूप से परिभाषित सेट से एक फ़ंक्शन मैपिंग नाम है। आइए इस नाम-प्रकार को डोमेन सेट करें।
एक रिश्ता एक ही डोमेन में इस तरह के साथ tuples का एक सेट है कि किसी भी टपल की सीमा सेट में uniqe है
अब तक मॉडल eaisly
trait Tuple
trait Relation[T<Tuple] extends Set[T]
द्वारा बस स्काला में तैयार किया जा सकता टुपल में vals, vars और defs ऊपर परिभाषित नाम-प्रकार सेट है। लेकिन एक ही नाम के साथ टुपल में दो डीफ नहीं होना चाहिए। इसके अलावा vars और अशुद्ध defs भी प्रतिबंधित किया जाना चाहिए।
अब मुश्किल भाग के लिए:
एक दो संबंधों के शामिल होने के एक रिश्ता जहां tuples के डोमेन ऑपरेंड tuples से डोमेन का मिलन है है। इस तरह कि केवल अपने डोमेन के चौराहे के लिए समान श्रेणी वाले tuples रखा जाता है।
def join(r1:Relation[T1],r2:Relation[T2]):Relation[T1 with T2]
चाल चलाना चाहिए।
संबंध का प्रक्षेपण एक संबंध है जहां टुपल्स का डोमेन ऑपरेंड टुपल्स डोमेन का सबसेट है।
def project[T2](r:Relation[T],?1):Relation[T2>:T]
यह वह जगह है जहां मुझे यकीन नहीं है कि यह एक सोल्शन खोजने के लिए भी संभव है। तुम क्या सोचते हो? परियोजना को परिभाषित करने के लिए कौन सी भाषा सुविधाओं की आवश्यकता है?
उपरोक्त प्रभाव से यह है कि एपीआई को उपयोग करने योग्य होना चाहिए। बॉयलरप्लेट की परतें और परतें स्वीकार्य नहीं हैं।
मैं आपको कुछ अनुच्छेदों के साथ प्रदान करना चाहूंगा जो आपने दूसरे पैराग्राफ में लिखा था .. –