logo       

Re: Interaction and ambiguous type variables: msg#00009

lang.haskell.glasgow.bugs

Subject: Re: Interaction and ambiguous type variables

Ralf Hinze <ralf@xxxxxxxxxxxxxxxxxxxxxx> writes:

> I am posting the following bug report every once in a while.
>
> 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.

Regards,
Malcolm


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise