मुझे यकीन नहीं है कि मुझे यह भी पता है कि इस सवाल से कैसे पूछना है .. एक कंपाइलर को लागू करने में मैं क्लाइंट को टुपल्स पर निर्दिष्ट, कहने के लिए अनुमति देना चाहता हूं। मैंने एक समारोह को घुमाने और अनिश्चित करने का एक तरीका प्रदान किया है, लेकिन केवल इसलिए कि मैंने ओकैम में एक बाइनरी ऑपरेटर लिखा था और इसे शब्द और टाइप प्रस्तुतियों पर जोड़ दिया था। उपयोगकर्ता इस समारोह को नहीं लिख सका।पॉलीएडिक ऑपरेशंस को कार्यान्वित और प्रतिनिधित्व
मैक्रो प्रोसेसर में, उपयोगकर्ता इस फ़ंक्शन को लिख सकता है क्योंकि टुपल्स सूचियां हैं।
करीबी कार्यों के लिए, उपयोगकर्ता आसानी से ट्रांसफॉर्मर लिख सकता है, क्योंकि यह शब्द लक्ष्य भाषा और ओकैम शब्द और टाइपिंग दोनों में बाइनरी है।
लेकिन वे टुपल्स के लिए ऐसा नहीं कर सकते हैं। यहां एक और उदाहरण दिया गया है: उपयोगकर्ता आसानी से धारावाहिक कार्यात्मक संरचना ऑपरेटर को परिभाषित करता है। लेकिन उपयोगकर्ता समानांतर संरचना को परिभाषित नहीं कर सकते: द्विआधारी संस्करण:
f1: D1 -> C1, f2: D2-> C2 --> f1 * f2: D1 * D2 -> C1 * C2
आसानी से लिखा है, लेकिन 3 पदों के लिए नहीं बढ़ाया जा सकता है: यहाँ एक गुना
f1 * (f2 * f3)
बजाय
f1 * f2 * f3
परिकलित किया जाएगा
[आइसोमोर्फिक लेकिन बराबर नहीं]
इस प्रश्न का सामान्यीकरण "कैसे क्या मैं एक पॉलीएडिक प्रोग्रामिंग भाषा लागू करता हूं "जो यहां पूछने के लिए बहुत कुछ है। मैंने जो करने की कोशिश की वह एक बिल्टिन ट्रांसफार्मर प्रदान करता था:
करी: टी 1 * टी 2 * टी 3 ... -> टी 1 -> टी 2 -> ... अनिश्चितता: टी 1 -> टी 2 -> .. टी 1 * टी 2 * T3
ऐसा है तो उपयोगकर्ता सिर्फ एक द्विआधारी ऑपरेटर के साथ सिलवटों कर सकता है:
uncurry (fold user_op (uncurry term))
लेकिन यह है न पर्याप्त रूप से सामान्य है और न ही इतनी अच्छी तरह से काम करता है .. :)
मैं एक बराबर सवाल लगता है हास्केल के लिए होगा: चूंकि हास्केल में कोई एन-आरी उत्पाद नहीं है, इसलिए एन-आरी ट्यूपल कंस्ट्रक्टर अनुकरण किए जाते हैं पुस्तकालय में एन कार्यों के साथ, जहां प्रत्येक को हाथ से लिखा जाना है। यह स्पष्ट रूप से बेकार है। यह कैसे तय किया जाएगा?
[मेरा मतलब है, यह कुछ सीमा n करने के लिए उन n कार्यों उत्पन्न करने के लिए एक अजगर स्क्रिप्ट लिखने के लिए मामूली बात है, तो क्यों यह इतना कठिन भाषा के अंदर एक अच्छी तरह से टाइप किया तरह से यह करने के लिए? है]
हाँ, लेकिन यह मेरा सवाल नहीं है: मैं ओकैम के प्रकार की प्रणाली के बारे में नहीं पूछ रहा हूं, मैं यह पूछ रहा हूं कि इसे किसी अन्य भाषा में कैसे कार्यान्वित किया जाए (वास्तव में मेरी भाषा फ़ेलिक्स, संकलक जिसके लिए ओकम्ल में लिखा गया है)। – Yttrill