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