Ini sekarang telah diperbaiki dalam GHC 8.0 berkat tiket GHC @ DominiqueDevriese .
Karena default tipe diperpanjang , ini tidak langsung terlihat di GHCi. Dengan teladan Anda,
> 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)
jenis lubang default ()
. Tampaknya ini adalah perilaku yang diinginkan , meskipun ada argumen yang harus dibuat bahwa perluasan default seharusnya tidak berlaku untuk lubang (karena penggunaan umum untuk lubang tersebut adalah agar kompilator memberi tahu Anda tipe yang disimpulkan).
Namun demikian, jika Anda mengompilasi dengan GHC atau menonaktifkan aturan default tambahan di GHCi (melalui :set -XNoExtendedDefaultRules
), kami melihat hasil dari peningkatan:
<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)