|
RE: Interaction and ambiguous type variables: msg#00010lang.haskell.glasgow.bugs
| > Main> mirror [] | > ERROR - Cannot find "show" function for: | > *** Expression : mirror [] | > *** Of type : [a] | > | > << Instructor: | > it's because `mirror []' has the polymorphic type `[a]' and the | > compiler cannot determine the `Show' instance for `a'. | | It might be worth pointing out that, even though Hugs and ghci have | this problem, nhc98 (used interactively through 'hi') does not. It | follows your suggested solution: | | > The general problem is that the expression submitted to Hugs or GHC has a | > polymorphic type *or* that a subexpression has a polymorphic type (as | > in the last example). A simple solution is to monomorphize the type | > instantiating all type variables to, say, the empty type `Void'. | | except that nhc98 uses the in-scope defaulting rule (e.g. default | (Integer)) to select an arbitrary dictionary to plug in, rather than | introducing a new type. There are only rare cases in which the actual | dictionary matters, so this suffices for the beginner. Good idea. I'm fixing ghci to do this too, at least when there is a Show class involved, and only standard classes (i.e. same rules as for numerics, except that we add 'Show' to the list of classes that trigger defaulting.) Simon
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Interaction and ambiguous type variables, Malcolm Wallace |
|---|---|
| Next by Date: | Re: Interaction and ambiguous type variables, C.Reinke |
| Previous by Thread: | Re: Interaction and ambiguous type variables, C.Reinke |
| Next by Thread: | [ ghc-Bugs-765503 ] why delete?, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |