यह अब GHC 8.0 में @ DominiqueDevriese के GHC टिकट के लिए निर्धारित किया गया है ।
विस्तारित प्रकार डिफ़ॉल्ट के कारण , यह जीएचसीआई में तुरंत स्पष्ट नहीं है। अपने उदाहरण के साथ,
> show _
<interactive>:7:6: error:
• Found hole: _h :: ()
Or perhaps ‘_h’ is mis-spelled, or not in scope
• In the first argument of ‘show’, namely ‘_h’
In the expression: show _h
In an equation for ‘it’: it = show _h
• Relevant bindings include
it :: String (bound at <interactive>:7:1)
छेद का प्रकार डिफ़ॉल्ट है ()
। यह स्पष्ट रूप से वांछित व्यवहार है , हालांकि एक तर्क है कि विस्तारित डिफ़ॉल्ट को छेद पर लागू नहीं किया जाना चाहिए (जैसा कि उनके लिए एक सामान्य उपयोग आपको संकलित करने के लिए अनुमान लगाने का प्रकार प्राप्त करना है)।
फिर भी, यदि आप जीएचसी के साथ संकलन करते हैं या जीएचसीआई (के माध्यम से :set -XNoExtendedDefaultRules
) में विस्तारित डिफ़ॉल्ट नियमों को अक्षम करते हैं, तो हम सुधार के परिणाम देखते हैं:
<interactive>:3:1: error:
• Ambiguous type variable ‘a0’ arising from a use of ‘show’
prevents the constraint ‘(Show a0)’ from being solved.
Probable fix: use a type annotation to specify what ‘a0’ should be.
These potential instances exist:
instance Show Ordering -- Defined in ‘GHC.Show’
instance Show Integer -- Defined in ‘GHC.Show’
instance Show a => Show (Maybe a) -- Defined in ‘GHC.Show’
...plus 22 others
...plus 11 instances involving out-of-scope types
(use -fprint-potential-instances to see them all)
• In the expression: show _
In an equation for ‘it’: it = show _
<interactive>:3:6: error:
• Found hole: _ :: a0
Where: ‘a0’ is an ambiguous type variable
• In the first argument of ‘show’, namely ‘_’
In the expression: show _
In an equation for ‘it’: it = show _
• Relevant bindings include
it :: String (bound at <interactive>:3:1)