[Haskell-beginners] How to explain this behaviour of ghc ?
Tillmann Rendel
rendel at daimi.au.dk
Fri Oct 10 17:46:42 EDT 2008
Hi Sylvain,
sylvain wrote:
> the following code snippet
>
> data Test = A Int
> instance Show Test
> main = print (A 1)
>
> leads to:
>
> *Main> main
> *** Exception: stack overflow
Since "instance Show Test" does not specify how method "show" should be
implemented for datatype Test, "show = undefined" is assumed. Now, print calls
show to create a string represention of (A 1), which produces the error
message.
Interestingly, undefined gives a better error message, when called directly:
Prelude> undefined
*** Exception: Prelude.undefined
I don't know why the behaviour of undefined differs from the behaviour of
unbound methods.
If you want to correct the above program, you could either bind show to
something, as in
instance Show Test where
show (A n) = "(A " ++ show n ++ ")"
or you could use ask the compiler to derive an instance for you, as in
data Test = Show Int
deriving Show
Tillmann
More information about the Beginners
mailing list