एडवर्ड Kmett की बात Lenses, Folds, and Traversals में, स्लाइड "पावर डॉट में है" पर, वह पता चलता (.) . (.) . (.)
के प्रकारमैन्युअल रूप से '(।) के प्रकार का अनुमान कैसे लगाएं। (।)। (।) '?
(a -> b) -> (c -> d -> e -> a) -> c -> d -> e -> b
मैं GHCi में अपनी तरह दिखा कर इसे देख सकते हैं है। लेकिन मैं यह भी जानना चाहूंगा कि क्यों।
(.) :: (a -> b) -> (c -> a) -> c -> b
(.) . (.) :: (a -> b) -> (c -> d -> a) -> c -> d -> b
(.) . (.) . (.) :: (a -> b) -> (c -> d -> e -> a) -> c -> d -> e -> b
पी.एस.: दूसरी बात मुझे समझ में करना चाहते हैं यही कारण है कि (.)
से (.) . (.)
और (.) . (.) . (.)
के मापदंडों के नियमित परिवर्तन में पैटर्न है मैंने (.) . (.)
की फ़ंक्शन परिभाषा का विस्तार करके (.) . (.)
को हल करने का प्रयास किया। (.)
की परिभाषा लागू करने के बाद मुझे मिल गया:
\x y z t -> x ((y z) t)
तो मैं प्रकार निष्कर्ष निकाला:
x :: a -> b
y :: c -> d -> a
z :: c
t :: d
हालांकि मैं (.) . (.) . (.)
पर खो गया। और मुझे नहीं पता कि यह मैन्युअल प्रकार अनुमान लगाने का सही तरीका है या नहीं।
आप फ़ंक्शन संरचना के "अर्थात् संपादक संयोजनकर्ता" दृश्य को पसंद कर सकते हैं, जहां हम '(।)' To' result' का नाम बदलते हैं। [इस पोस्ट] में दिए गए अंतर्ज्ञान (http://conal.net/blog/posts/semantic-editor-combinators) काफी अच्छा है, और मेरी राय में यह स्पष्ट है कि क्यों '(।) 'परिणामों की रचनाओं को ढंकना यह किस प्रकार करता है। –
@DanielWagner, लिंक के लिए धन्यवाद। मैं इसे जल्द ही पढ़ूंगा। असल में मैं 'अर्थपूर्ण संपादक संयोजक' पर जा रहा था क्योंकि एडवर्ड ने इस बात में बहुत कुछ बताया था। –