Avoiding "No explicit method ..." warnings

George Russell ger@tzi.de
Tue, 21 Jan 2003 16:43:05 +0100


Simon Peyton-Jones wrote:
[snip]
> One other idea though.  Suppose you say
> 
>     class ComplicatedClass x where
>         _simpleTitleFn :: x -> String
>         muchMoreComplicatedTitleFn :: extra arguments -> x -> IO ...
> 
> In general GHC doesn't report "warning unused" for variables whose name
> begin with an underscore.  In the case of class methods, I don't think
> it suppresses the warning, but that would be an easy change to make.
> Indeed, it would arguably be more consistent to do so anyway
> 
> > #-}) which compiles exactly as normal except that (1) no warning is
> > given for instances which don't define it; (2) a warning is given
> > whenever anyone outside the class declaration *uses* simpleTitleFn.
> 
> The "_" idea would achieve (1).  You could get (2) by not exporting the
> "_" method from the module defining ComplicatedClasss.
> 
> How would that be?
[snip]
Yes, this looks just as good as my original idea, if not better.  Especially
as it "would be an easy change to make". 

In fact there are some cases where I might want to use "simpleTitleFn" on a 
"Trust me, it's defined for this type" basis, but that could be achieved by
exporting an equivalent, but deprecated, function.