मैं ट्विटर पर Sadek Drobi के साथ चैट कर रहा था जब एफ # असीमित प्रकार का समर्थन नहीं कर रहा था। यह पता चला सी # में आप इन पंक्तियों के साथ कुछ कर सकते हैं कि:एफ # में अनंत प्रकार (उर्फ रिकर्सिव प्रकार) संभव नहीं हैं?
delegate RecDelegate<T> RecDelegate<T>(T x);
हालांकि, हमारे दोनों भागों पर कुछ प्रयोग के बाद, हमने तय किया एक ही एफ में # असंभव दोनों अंतर्निहित और स्पष्ट रूप से लगता है कि।
स्पष्ट:
type 'a specialF = 'a->specialF<'a>
त्रुटि FS0191: इस प्रकार परिभाषा एक संक्षिप्त नाम के माध्यम से एक तत्काल चक्रीय संदर्भ , struct क्षेत्र या विरासत संबंध शामिल है।
अंतर्निहित:
let rec specialF (x: 'a) = specialF
प्रकार बेमेल। 'बी - की अपेक्षा' ए -> 'बी। परिणामी प्रकार असीमित होगा जब 'बी' और '' -> 'b' को एकीकृत किया जाएगा।
बेशक, ये जानबूझकर सरल नमूने हैं।
मैं सोच रहा था कि क्या मैं किसी तरह गलत हूं। शायद मुझे कुछ प्रकार की जरूरी एनोटेशन याद आई?
क्या यहां कोई व्यावहारिक अनुप्रयोग है, या सवाल सिर्फ मज़े की जांच का नतीजा था? – Brian
जहां तक मैं समझता हूं, वहां कोई व्यावहारिक रूप से पारदर्शी पारदर्शी अनुप्रयोग नहीं हैं। हालांकि, एक उदाहरण यह होगा कि कुछ प्रकार के बंद-ओवर परिवर्तनीय स्थिति के साथ यह बार-बार अनुप्रयोगों के लिए उपयोगी हो सकता है। पूर्व: जोड़ें (1) (2) (3) (4) - जहां कोई भी आवेदन किया जा सकता है। –
यहां एक ओकैमल प्रोग्राम है जो मैंने लिखा है जो इस सुविधा का उपयोग रेक्टिप्स का उपयोग करके संकेत के स्तर से बचने के लिए करता है। http://www.ffconsultancy.com/languages/ray_tracer/code/1/ray.ml –