पृष्ठभूमि: मुझे ~ समझ में नहीं आता है और मैं उपयोग के मामले का अनुरोध कर रहा हूं।2 कार्यों के साथ `~` को समझना
को देखते हुए:
{-# LANGUAGE GADTs #-}
f :: a ~ b => a -> b -> b
f a b = a
g :: a -> a -> a
g a b = a
मुझे ऐसा लगता है कि दोनों कार्यों के बराबर हैं:
Prelude> :r
[1 of 1] Compiling Main (TypeEq.hs, interpreted)
Ok, modules loaded: Main.
*Main> f 10 20
10
*Main> g 10 20
10
क्या परिस्थितियों में यह g
से अधिक f
उपयोग करने के लिए उपयोगी हो सकता है?
दरअसल के अन्य सूखी-संभावना की तुलना में बेहतर हो सकता है, वहाँ कोई फायदा नहीं है ऐसे मामले में: वे कार्य बराबर हैं। मुझे लगता है कि कुछ उपयोगी सामान देखने के लिए आपको परिवार या जीएडीटी टाइप करने की आवश्यकता है। या शायद $ Data.Typeable.eqT $ एक अच्छा उदाहरण के रूप में मदद कर सकते हैं। – chi
यदि आप सोचते हैं, तो एक बहुत ही उपयोगी तरीके से ~ ~ 'का उपयोग कैसे किया जा सकता है, क्रिस डोन से इस महान ब्लॉग पोस्ट को पढ़ें: http://chrisdone.com/posts/haskell-constraint-trick – Shersh