Interaction and ambiguous type variables

Malcolm Wallace Malcolm.Wallace@cs.york.ac.uk
Thu, 3 Jul 2003 14:42:35 +0100


Ralf Hinze <ralf@informatik.uni-bonn.de> 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
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs