
Well the problem is that no warnings are generated.
If you have a class with some methods that do not have a default
implementation and you do not provide them when defining your
instance, GHC will at least politely complain.
Ideally, GHC would detect that a Show instance requires one of its two
functions to be declared as they are mutually recursive and complain.
Is that too much to ask?
Maybe it is, and I can see why ghc developers would not bother, but
can we agree that if not a bug, this is at least an inconvenience ?
It took me a while to determine that it was not my own code but rather
the incomplete show instance that was sinking my app :-)
Best,
titto
On 8 July 2010 14:47, Ivan Lazar Miljenovic
"Pasqualino \"Titto\" Assini"
writes: Thanks for the explanation.
What I meant is not that is a bug that it recurses but rather the fact that the compiler will accept this incomplete definition without complaining.
This problem has bitten me twice while trying to use automatic derivation of a data type in another file.
In my innocence I wrote:
instance Show Test
rather than
deriving instance Show Test
I didn't notice the error as GHC seemed to be happy and then when I tried to use it: BANG!
Very confusing.
I suppose that Haskell has spoiled me, if it compiles I assume that it will work :-)
As I said, there would be no error as all the methods have a definition (whether or not they make sense in this case is a different story); it will still successfully load a file if any methods don't have definitions but will provide a warning in those situations.
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com
-- Pasqualino "Titto" Assini, Ph.D. http://quicquid.org/