सफल होता है, मुझे शायद ही कभी यह संघर्ष F # के साथ होता है, लेकिन फिर फिर से विरासत एफ # के साथ बहुत कम आम है, इसलिए शायद मैं भाग्यशाली था। या मैं स्पष्ट याद कर रहा हूँ। आम तौर पर जब संकलक एक निश्चित प्रकार को जानने के बारे में शिकायत करता है तो मैं पाइप या संरचना ऑपरेंड के क्रम को उलट देता हूं और मैं कर रहा हूं।पाइपिंग या संरचना के साथ टाइप अनुमान विफल रहता है, जहां सामान्य फ़ंक्शन कॉल
असल में, एक फ़ंक्शन कॉल दिया गया जो g(f x)
के रूप में काम करता है, यह x |> f |> g
या (f >> g) x
के रूप में भी काम करता है। लेकिन आज ऐसा नहीं होता ...
यहाँ एक गंदा मैं क्या मतलब का सबूत अवधारणा-का-है:
module Exc =
open System
type MyExc(t) = inherit Exception(t)
let createExc t = new MyExc(t)
type Ex = Ex of exn
type Res = Success of string | Fail of Ex with
static member createRes1 t = Ex(createExc(t)) |> Fail // compiled
static member createRes2 t = t |> createExc |> Ex |> Fail // FS0001
static member createRes3 = createExc >> Ex >> Fail // FS0001
आम तौर पर, यह काम करता है (कम से कम मेरे अनुभव में)। "असफल" फेंक वाली रेखाएं:
त्रुटि FS0001: मिस्चैच टाइप करें। एक MyExc की अपेक्षा -> 'ए लेकिन एक exn दिया -> पूर्व। प्रकार 'MyExc' प्रकार से मेल नहीं खाता 'exn'
नहीं एक बड़ी बात, मुश्किल नहीं वैकल्पिक हल के लिए, लेकिन मैं कोड का एक बहुत कुछ है, जहां रचना आसान/क्लीनर दृष्टिकोण है लिखने के लिए है करने के लिए होती हैं और मैं उपयोगिता कार्यों का एक गुच्छा लिखना नहीं चाहता जो मुझे हर जगह रखना है।
मैंने लचीला प्रकार पर देखा, क्योंकि मुझे लगता है कि यह एक विरोधाभासी समस्या है, लेकिन मुझे नहीं लगता कि मैं इसे यहां कैसे लागू कर सकता हूं। इस मूर्खतापूर्ण रखने के लिए कोई विचार?
नोट, अगर मैं पुनर्व्यवस्थित करता हूं, यानी Ex <<createExc>> Fail
या पाइप-पिछड़े ऑपरेटर का उपयोग करके मैं एक अलग हिस्से पर एक ही त्रुटि के साथ समाप्त होता हूं।
हमेशा के रूप में उत्कृष्ट और अंतर्दृष्टि, धन्यवाद Tomas। ऐसा लगता है कि हम इस समझौते में हैं कि यह निश्चित रूप से एक अजीब तरह का व्यवहार है। मैंने हमेशा सोचा (और आमतौर पर यह सही है) कि डीयू कन्स्ट्रक्टर फ़ंक्शंस की तरह व्यवहार करते हैं और मैं उन्हें हर समय श्रृंखला/लिखता हूं। डीयू सदस्यों के हस्ताक्षर को देखते हुए, वे "जैसे दिखते हैं" कार्यों। – Abel