मुझे नहीं लगता कि कुछ भी बुरा होगा। रूपांतरण पूरी तरह से स्पष्ट है। सबसे खराब मामला, स्कैला यह समझने में सक्षम नहीं होगा कि निहित रूपांतरण लागू होता है।
implicit def curryImplicitly[A,B,C](f: (A, B) => C) =
(a: A) => (b: B) => f(a, b)
implicit def uncurryImplicitly[A,B,C](f: A => B => C) =
(a: A, b: B) => f(a)(b)
फिर फिर, यह भी सहायक होगा।
implicit def flipImplicitly[A,B,C](f: (A, B) => C) =
(b: B, a: A) => f(a, b)
implicit def flipImplicitlyCurried[A,B,C](f: A => B => C) =
(b: B) => (a: A) => f(a)(b)
लेकिन उन ताकि आप इन की जरूरत है, सकर्मक नहीं हैं:
implicit def flipAndCurry[A,B,C](f: (A, B) => C) =
(b: B) => (a: A) => f(a, b)
implicit def flipAndUncurry[A,B,C](f: A => B => C) =
(b: B, a: A) => f(a)(b)
लेकिन अब रूपांतरण अस्पष्ट है। तो यह सभी गुलाब नहीं है।
चलिए जानते हैं कि यह अभ्यास में कैसे काम करता है। आपको फंक्शन 3, फंक्शन 4, आदि के लिए समकक्षों की आवश्यकता हो सकती है।
मैंने 2.8 में इसके साथ नहीं खेला है, लेकिन मैंने 2.7.एक्स के अंधेरे दिनों में इसे वापस करने की कोशिश की और यह इंफ्रेंसर आईआईआरसी प्रकार में कंपाइलर दुर्घटनाओं का कारण बन गया। चीजों ने उस मोर्चे पर एक उचित बिट में सुधार किया है, तो शायद यह सब अच्छा है ... –
हाँ, अगर आप इसे उच्च प्रकार के प्रकार का अनुमान लगाने की कोशिश करते हैं तो अभी भी संकलक को क्रैश करना बहुत आसान है, लेकिन यह एक बड़ा सुधार है 2.7। – Apocalisp
मैंने साधारण मामलों के लिए 2.8 में इन्हें आजमाया, और सब ठीक हो गया। – thSoft