Show more instances with :info
Today I was really stumped by the rule used to select which instances are shown with the :info command. I did the following:
newtype Control.Monad.Writer.Lazy.Writer w a
= Control.Monad.Writer.Lazy.Writer {Control.Monad.Writer.Lazy.runWriter :: (a,
w)}
-- Defined in Control.Monad.Writer.Lazy
instance Functor (Control.Monad.Writer.Lazy.Writer w)
-- Defined in Control.Monad.Writer.Lazy
I was really surprised not to see a Monad instance which, after all, is the raison d'entre of the Writer type. After some investigation I found out that this behavior is a combination of ghci's rule not to show instances which involves stuff not in scope and the fact that Monoid wasn't in scope.
Now, personally I tend to want to see everything when I use the :info command so my preference would be to see all instances. But I realize that you came up with the current rule for a reason and so here are some alternative ways how to please me.
The first one is to have some kind of flag to give to :info so that it shows all instances. One might of course make it so that a flag is needed to suppress extraneous instances and get the current behavior. That would actually be my personal preference.
Another way, which I'm not sure I like but would at least help in the example above, is to note that the type I'm asking about is not in scope in the first place. So I'm not interested in 'in scope stuff' at all and so showing me all instances, even those including things not in scope, isn't very likely to confuse me. This rule would have the rather confusing effect of potentially showing less information about stuff that is in scope compared to things that are not in scope. But despite this confusing consequence I find the rule very sensible, so I'm in two minds about it.
Anyway, having some way to see all instances would be nice.
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.1 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | GHCi |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |