मैं कुछ महीनों के लिए एफ # के साथ काम कर रहा हूं लेकिन मेरी समस्या के लिए कोई संतोषजनक समाधान नहीं मिला। मैं मूल्यों के भेदभाव वाले संघ या इन मूल्यों पर संचालन के रूप में संचालन के उत्तराधिकार का वर्णन करना चाहता हूं। ओ> सूची रिकर्सिवली सभी कार्यों को लागू करके एक 'ओ प्रकार में परिवर्तित किया जा सकता है, और अभी भी रखें: इस तरह, मेरी प्रकार वैल <'एफ # जेनेरिक बाधा संघ प्रकार
type Val<'o> =
| Val of 'o
| Func1 of ('a->'o) * Val<'a>
| Func2 of ('a->'b->'o) * Val<'a> * Val<'b>
प्रकार वैल < ओ> इस प्रकार परिभाषित किया गया है ' संचालन के
लेकिन अगर मैं वैल < 'ए,' बी, 'ओ> का उपयोग नहीं करता हूं तो मैं जेनेरिक प्रकार' ए और 'बी और उनकी बाधाओं को परिभाषित नहीं कर सकता। तो मुझे क्या करना है, मैं उप-वैल सामान्य प्रकार है, जो मैं सामान्य रहना चाहते हैं परिभाषित करने के लिए है:
type Val<'a, 'b, 'o> =
| Val of 'o
| Func1 of ('a->'o) * Val<?, ?, 'a>
| Func2 of ('a->'b->'o) * Val<?, ?, 'a> * Val<?, ?, 'b>
वहाँ किसी भी एफ # संरचना है कि इस समस्या के लिए अनुकूलित किया जा सकता है?
बहुत धन्यवाद
[संपादित करें]
मेरी समस्या आगे का वर्णन करने के लिए, मैं एक एफआरपी संरचना की विस्तृत प्रतिनिधित्व (लेकिन genericity समस्या पाने के लिए कोशिश कर रहा हूँ के लिए घटनाओं/संकेतों में ही है कि मूल्यों के लिए)।
प्रतिनिधित्व डेटाबेस भंडारण, के लिए प्रदर्शन और उपयोगकर्ता संपादित पाठ में अनुवाद किया या का मूल्यांकन एक परिणाम पाने के लिए या तो धारावाहिक हो सकता है:
"Func (x -> x²) (Val(3.4))" <--> representation <--> 11.56
|
user
मैं एक प्रोटोटाइप काफी अच्छी तरह से काम कर रहे एक PrimitiveValue
संघ प्रकार का उपयोग किया जाता है, और जेनेरिक obj[] -> obj
कार्यों में रनटाइम पर संकलित स्ट्रिंग्स स्ट्रिंग्स, लेकिन मूल्यांकन जांच और कास्टिंग पर बहुत भारी है (विशेष रूप से क्योंकि मैं PrimitiveValue
में सरणी और विकल्पों का भी उपयोग कर रहा हूं), इसलिए मैं एक और अधिक सुरुचिपूर्ण और दृढ़ता से टाइप किए गए समाधान की तलाश में था।
ध्यान दें कि आप 'यूनिट'-रिटर्निंग ऑपरेशंस को सक्षम करने के लिए दूसरा 'Invoke' अधिभार भी चाहते हैं। – kvb
यह भी ध्यान दें कि 'IFuncOperation <_,_> 'में' वैल <_> 'के दूसरे एप्लिकेशन द्वारा' टी 1 -> 'टी 2' को लपेटने से आपको' अच्छी तरह से 'वैल <_>' की अच्छी संख्या में मनमाने ढंग से घुमावदार धैर्य के कार्यों को लागू करने में सक्षम बनाता है। – kvb