[Haskell-beginners] Defining ExtensionClass (Maybe a) instance in xmonad.
Dmitriy Matrosov
sgf.dma at gmail.com
Sun Jan 25 21:07:31 UTC 2015
On 2015年01月25日 21:09, Dmitriy Matrosov wrote:
> Hi.
>
> Sorry for big delay, rewriting my previous solution takes a lot of time.
>
> On 2015年01月20日 23:14, Brandon Allbery wrote:
> > > then there is no (Show a, Read a) constraint. It will come
> > > up only, when i mention PersistentExtension in one of case
> > > branches, but, on the other hand, may be i can avoid
> > >
> >
> > That would be expected, I believe; if you mentioned it, it must
> apply to
> > the whole instance, not just one case branch. But I'm not quite
> clear on
> > what you are saying here.
>
> I mean, that i already have contraint (ExtensionClass a) in e.g.
>
> instance (ExtensionClass a) => ExtensionClass (Maybe a) where
> initialValue = Nothing
>
> then if type a had Show and Read instances, then (Maybe a) will had them
> too
> and i may define 'extensionType = PersistentExtension' in (Maybe a)
> instance.
> If type a had no Show and Read instances, then i may only define (Maybe
> a) to be
> a StateExtension . Thus, theoretically, (ExtensionClass a) contraint is
> enough, and i want to express above condition on (Maybe a) extensionType
> value
> with only that contraint. I can't express it by pattern-matching on type
> a's
> StateExtension data contructor, because that will bring up (Show a, Read a)
> constraint on (Maybe a) instance. I.e. i, probably, can't do it with
> condition
> at data level. Then, may be, i can make a condition at type level somehow?
Hm, i think, i miss something here. There should be:
if type a had Show and Read instances * and have 'extensionType =
PersistentExtension' * , then (Maybe a) * may * had it too.
If type a had no Show and Read instances, then i may only define (Maybe
a) to be a StateExtension .
More information about the Beginners
mailing list