GADT confusion

Alan & Kim Zimmerman alan.zimm at gmail.com
Mon May 18 08:21:23 UTC 2015


Thanks, that makes sense.

And the existing behaviour is in the compiler, so the surrounding parens
are optional and can/should be stripped (except for Api Annotations)

Alan

On Mon, May 18, 2015 at 10:11 AM, Roman Cheplyaka <roma at ro-che.info> wrote:

> On 18/05/15 10:57, Alan & Kim Zimmerman wrote:
> > Hi all
> >
> > I am working on D836 and have the following test case
> >
> >     data MaybeDefault v where
> >         SetTo4 :: forall v a. (( Eq v, Show v ) => v -> MaybeDefault v
> > -> a -> MaybeDefault [a])
> >
> > GHC 7.10.1 regards the return type of SetTo4 as `MaybeDefault [a]`
> >
> > The question is, due to the parens, is the return type not the whole RHS?
> >
> > i.e. Similar to how in the signature
> >
> >     map :: (a -> b) -> [a] -> [b]
> >
> > the first paramater is a single function.
> >
> > I am sure I am just confused here.
>
> This is the wrong analogy, since (a -> b) in map's type is in the
> negative position.
>
> The correct analogy would be the return type of
>
>   map :: (a -> b) -> ([a] -> [b])
>
> You could argue it both ways. (But only one of them leads to the above
> declaration being correct, since the function type is not an instance of
> MaybeDefault.)
>
> Roman
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20150518/6ba68e38/attachment.html>


More information about the ghc-devs mailing list