haddock, instances and defining modules

Simon Hengel sol at typeful.net
Thu Oct 18 11:32:40 CEST 2012


Hi Daniel,

> The haddock page for Data.Either lists an instance Functor (Either a).
> However, this instance doesn't get in scope when importing
> Data.Either. E.g., the following program fails to compile:
>
> > import Data.Either
> >
> > main = print $ fmap not $ Right "hello"
>
> AFAIK, one needs to import Control.Monad.Instances instead to get such
> an instance; but there is nothing in the haddock page of Data.Either
> that suggests it. This can be quite frustrating for beginners!
>
> It would be good if the docs could be improved here, but I'm not sure
> what to suggest (maybe haddock should be generating something else in
> these cases?)… Any thoughts?

The actual issue is, that the instance definition is orphan (this has
been fixed in base 4.6.0.0).

I think without orphan instances, this problem does not arise.  I'm not
sure whether it's worth the effort to address a problem that only occurs
with orphan instances in Haddock.

It would still be nice if we had "source" links to instance definitions,
and as a side effect they would also address this issue (you could then
simply click on the "source" link to see where that instance is
defined).

Cheers,
Simon



More information about the Libraries mailing list