Preparing for a review of pattern synonyms

Simon Marlow marlowsd at gmail.com
Mon Dec 9 14:29:59 UTC 2013


On 09/12/2013 13:31, Dr. ERDI Gergo wrote:
> Hi Simon,
>
> On Mon, 9 Dec 2013, Simon Marlow wrote:
>
>> I think pattern synonyms are great!  A couple of questions:
>>
>> * what will Haddock show for a pattern export?
>
> Is Haddock a part of GHC? I don't know. If it's not, then whatever
> parser it's using will have to be extended to support pattern synonyms.

Haddock uses GHC's parser, but it will need to be taught about pattern 
synonyms and how to render them in documentation.

>> * can we still write pattern matches that GHC can infer
>>   to be exhaustive when using pattern synonyms?
>
> No. I don't see how that would be possible without having access to the
> pattern synonym definition when typechecking/compiling a use site. One
> deliberate design decision was to make pattern synonyms proper
> abstractions, in the sense that compiling use sites shouldn't require
> access to its definition details.

Right, I'm not suggesting that we should break the abstraction, but I 
think it would be really nice if there was a way to say "the following 3 
patterns are exhaustive", perhaps in a pragma.

One of the things that we ought to be able to do with this extension is 
to provide abstract datatypes with pattern matching support.  The only 
thing missing is support for exhaustive pattern matches.  F# active 
patterns has it!

>> Are we not doing ViewPatternsAlternative any more?
>> https://ghc.haskell.org/trac/ghc/wiki/ViewPatternsAlternative
>> Or is that just being treated as an orthogonal issue?  I rather like
>> that proposal, and we originally discussed it in conjunction with
>> pattern synonyms.
>
> It should be treated as orthogonal -- if and when GHC gets support for
> it, they will be available in PatternSynonyms as well.
>
> If there's no separate Trac ticket for ViewPatternsAlternative yet, I'm
> happy to open one.

That would be great!

Cheers,
	Simon



More information about the ghc-devs mailing list