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

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


More information about the Libraries mailing list