
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