pointfree
के अनुसार:व्युत्पन्न क्या है जो हास्केल के x -> (x, x) को शामिल करने के बराबर (,) दिखाता है?
\x -> (x, x)
के बराबर है:
join (,)
क्या है व्युत्पत्ति है कि इस से पता चलता? प्रकार हस्ताक्षर पर
pointfree
के अनुसार:व्युत्पन्न क्या है जो हास्केल के x -> (x, x) को शामिल करने के बराबर (,) दिखाता है?
\x -> (x, x)
के बराबर है:
join (,)
क्या है व्युत्पत्ति है कि इस से पता चलता? प्रकार हस्ताक्षर पर
देखो:
\x -> (x, x) :: a -> (a, a)
(,) :: a -> b -> (a, b)
join :: Monad m => m (m a) -> m a
यह ध्यान देने योग्य है कि ((->) r)
Monad
typeclass का एक उदाहरण है। इसलिए, विशेषज्ञता पर:
join :: (r -> r -> a) -> (r -> a)
क्या join
कार्यों के लिए करता है वही तर्क को दो बार दिए गए समारोह लागू है:
join f x = f x x
-- or
join f = \x -> f x x
इससे हम तुच्छता से देख सकते हैं:
join (,) = \x -> (,) x x
-- or
join (,) = \x -> (x, x)
QED।
मुझे एडिट्स सहज ज्ञान पसंद है। यहां बताया गया है कि मैं स्रोत कोड पढ़कर इसे कैसे समझूंगा।
join
join
join
join x = x >>= id
join (,) = (,) >>= id
>>=
on Hoogle and click the link(,)
एक समारोह है जो के साथ काम कर रहा हूँ, इसलिए मैं click "source" on the Monad ((->) r)
instancef >>= k = \r -> k (f r) r
f = (,)
और k = id
है, हम \r -> id ((,) r) r
मिलid
! मुझे लगता है कि Hoogle पर खोज सकते हैं और click through to its source codeid x = x
join (,)
की अब हम \r -> ((,) r) r
\r -> (r,r)
\r -> (,) r r
कभी भी यह न भूलें कि हैडॉक्स लाइब्रेरी के स्रोत कोड से लिंक करते हैं। यह समझने की कोशिश करते समय कि चीजें कैसे काम करती हैं, यह बेहद उपयोगी है।
यह शुरुआती लोगों के लिए सुंदर है।इस तरह के उत्तरों को लिखना नवागंतुकों के लिए बेहद उपयोगी है। –