में कार्यात्मक निर्भरता मैं वास्तव में इसे प्राप्त नहीं कर सकता। हमें इसकी आवश्यकता क्यों है? मेरा मतलब है कि अगर मैं एक ही प्रकार के पैरामीटर का उपयोग करता हूं, तो मुझे लगता है कि इसका मतलब है कि वे एक ही प्रकार का होना चाहिए।हास्केल
मैंने सुना है कि यह अनंत लूप से बचने के लिए कंपाइलर की मदद कर सकता है। क्या कोई मुझे इसके बारे में कुछ और जानकारी बता सकता है?
अंत में, क्या कोई भी 'पैटर्न और प्रथाओं' हमें वास्तविक विश्व हास्केल में कार्यात्मक निर्भरता के उपयोग पर पालन करना चाहिए?
[अनुवर्ती प्रश्न]
class Extract container element where
extract :: container -> element
instance Extract (a,b) a where
extract (x,_) = x
उपरोक्त कोड में, मैं एक ही प्रकार चर इस्तेमाल किया 'एक' दोनों कंटेनर और तत्व के लिए, मुझे लगता है कि संकलक इस प्रकार अनुमान लगा सकते हैं कि इन दो प्रकार एक ही प्रकार के हैं।
लेकिन जब मैं GHCi में इस कोड की कोशिश की, मैं निम्नलिखित प्रतिक्रिया मिल गया:
*Main> extract('x',3)
<interactive>:1:0:
No instance for (Extract (Char, t) element)
arising from a use of `extract' at <interactive>:1:0-13
Possible fix:
add an instance declaration for (Extract (Char, t) element)
In the expression: extract ('x', 3)
In the definition of `it': it = extract ('x', 3)
जब उनमें से एक प्रकार 'चार', क्यों एक दूसरे को अभी भी अनसुलझे प्रकार 'तत्व है होने के लिए निर्दिष्ट किया गया है '?
http://www.haskell.org/haskellwiki/Functional_dependencies मदद करता है? – lijie