
Hi devs, Is a pattern signature a) something you put after `pattern P ::` ? b) something you put after `::` in a pattern, as in `foo (Proxy :: Proxy a)` ? I've seen the term "pattern signature" apply to both, and I've been tripped up by this. Does anyone have terminology that unambiguously separates these two constructs that we can all adopt? Thanks! Richard

Ah yes. I think we started with "pattern synonym signature" for (b) but have since denenerated to "pattern signature" which is quite confusing.
User advice would be good!
S
| -----Original Message-----
| From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of
| Richard Eisenberg
| Sent: 05 January 2018 13:48
| To: GHC

Further complicated by the fact that that form used to be called a "pattern signature" with accompanying extension, until that was folded into ScopedTypeVariables extension. On Fri, Jan 5, 2018 at 9:41 AM, Simon Peyton Jones via ghc-devs < ghc-devs@haskell.org> wrote:
Ah yes. I think we started with "pattern synonym signature" for (b) but have since denenerated to "pattern signature" which is quite confusing.
User advice would be good!
S
| -----Original Message----- | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of | Richard Eisenberg | Sent: 05 January 2018 13:48 | To: GHC
| Subject: pattern signatures | | Hi devs, | | Is a pattern signature | | a) something you put after `pattern P ::` ? | b) something you put after `::` in a pattern, as in `foo (Proxy :: | Proxy a)` ? | | I've seen the term "pattern signature" apply to both, and I've been | tripped up by this. Does anyone have terminology that unambiguously | separates these two constructs that we can all adopt? | | Thanks! | Richard | _______________________________________________ | ghc-devs mailing list | ghc-devs@haskell.org | https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h | askell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc- | devs&data=02%7C01%7Csimonpj%40microsoft.com%7Cbc86346cc90f4a9516d108d5 | 5442f5a0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6365075689386605 | 89&sdata=gvjnHyGAojz982UEV1u0hZPKH%2B%2F3UjiDlQm10%2BRZ7r8%3D&reserved | =0 _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net

Hi, Am Freitag, den 05.01.2018, 13:42 -0500 schrieb Brandon Allbery:
Further complicated by the fact that that form used to be called a "pattern signature" with accompanying extension, until that was folded into ScopedTypeVariables extension.
which I find super confusing, because sometimes I want a signature on a pattern and it is counter-intuitive to me why I should not longer use the obviously named PatternSignatures extension but rather the at first glance unrelated ScopedTypeVariable extension. But I am derailing the discussion a bit. Cheers, Joachim -- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/

Well, as you say, "pattern signature" makes sense for both, so I would
expect to use context to disambiguate. If I wanted to be explicit about
which one I meant, I'd use:
a) "Pattern synonym signature"
b) "Signature on a pattern"
-Iavor
On Fri, Jan 5, 2018 at 1:12 PM Joachim Breitner
Hi,
Am Freitag, den 05.01.2018, 13:42 -0500 schrieb Brandon Allbery:
Further complicated by the fact that that form used to be called a "pattern signature" with accompanying extension, until that was folded into ScopedTypeVariables extension.
which I find super confusing, because sometimes I want a signature on a pattern and it is counter-intuitive to me why I should not longer use the obviously named PatternSignatures extension but rather the at first glance unrelated ScopedTypeVariable extension.
But I am derailing the discussion a bit.
Cheers, Joachim
-- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/ _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

In my eyes, signatures are something which goes with a definition.
So (a) is a pattern (synonym) signature, while (b) is merely a type
annotation on a pattern.
On Fri, Jan 5, 2018 at 11:23 PM, Iavor Diatchki
Well, as you say, "pattern signature" makes sense for both, so I would expect to use context to disambiguate. If I wanted to be explicit about which one I meant, I'd use:
a) "Pattern synonym signature" b) "Signature on a pattern"
-Iavor
On Fri, Jan 5, 2018 at 1:12 PM Joachim Breitner
wrote: Hi,
Am Freitag, den 05.01.2018, 13:42 -0500 schrieb Brandon Allbery:
Further complicated by the fact that that form used to be called a "pattern signature" with accompanying extension, until that was folded into ScopedTypeVariables extension.
which I find super confusing, because sometimes I want a signature on a pattern and it is counter-intuitive to me why I should not longer use the obviously named PatternSignatures extension but rather the at first glance unrelated ScopedTypeVariable extension.
But I am derailing the discussion a bit.
Cheers, Joachim
-- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/ _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

I like the idea of distinguishing “signatures” from “annotations”.
But then what is currently a “pattern signature” with extension -XPatternSignatures, becomes “type annotation in a pattern” or perhaps “pattern type-annotation” which is a bit clumsy.
Possibly “type specification” instead of “type annotation”. Thus “pattern type-spec” which is snappier.
Simon
From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Spiwack, Arnaud
Sent: 08 January 2018 10:11
Cc: Joachim Breitner
Further complicated by the fact that that form used to be called a "pattern signature" with accompanying extension, until that was folded into ScopedTypeVariables extension.
which I find super confusing, because sometimes I want a signature on a pattern and it is counter-intuitive to me why I should not longer use the obviously named PatternSignatures extension but rather the at first glance unrelated ScopedTypeVariable extension. But I am derailing the discussion a bit. Cheers, Joachim -- Joachim Breitner mail@joachim-breitner.demailto:mail@joachim-breitner.de http://www.joachim-breitner.de/https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.joachim-breitner.de%2F&data=02%7C01%7Csimonpj%40microsoft.com%7Ccca9ff6f4b2b4a32e61308d55680514e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636510031494207475&sdata=%2BWGJXq6S7IrWJzsYIZWdk%2BDa%2BSLtW8CfCiPHitgnArc%3D&reserved=0 _______________________________________________ ghc-devs mailing list ghc-devs@haskell.orgmailto:ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devshttps://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=02%7C01%7Csimonpj%40microsoft.com%7Ccca9ff6f4b2b4a32e61308d55680514e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636510031494207475&sdata=L7reldRrJzSuxRhDTFUgNoy8zXHEbW96rqY8TpUeHxI%3D&reserved=0 _______________________________________________ ghc-devs mailing list ghc-devs@haskell.orgmailto:ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devshttps://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=02%7C01%7Csimonpj%40microsoft.com%7Ccca9ff6f4b2b4a32e61308d55680514e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636510031494207475&sdata=L7reldRrJzSuxRhDTFUgNoy8zXHEbW96rqY8TpUeHxI%3D&reserved=0

Or maybe "pattern ascription"? "type-ascription" is implied as "ascription" isn't commonly used for something else (AFAIK). Sylvain On 08/01/2018 13:59, Simon Peyton Jones via ghc-devs wrote:
I like the idea of distinguishing “signatures” from “annotations”.
But then what is currently a “pattern signature” with extension -XPatternSignatures, becomes “type annotation in a pattern” or perhaps “pattern type-annotation” which is a bit clumsy.
Possibly “type specification” instead of “type annotation”. Thus “pattern type-spec” which is snappier.
Simon
*From:*ghc-devs [mailto:ghc-devs-bounces@haskell.org] *On Behalf Of *Spiwack, Arnaud *Sent:* 08 January 2018 10:11 *Cc:* Joachim Breitner
; ghc-devs@haskell.org *Subject:* Re: pattern signatures In my eyes, signatures are something which goes with a definition.
So (a) is a pattern (synonym) signature, while (b) is merely a type annotation on a pattern.
On Fri, Jan 5, 2018 at 11:23 PM, Iavor Diatchki
mailto:iavor.diatchki@gmail.com> wrote: Well, as you say, "pattern signature" makes sense for both, so I would expect to use context to disambiguate. If I wanted to be explicit about which one I meant, I'd use:
a) "Pattern synonym signature"
b) "Signature on a pattern"
-Iavor
On Fri, Jan 5, 2018 at 1:12 PM Joachim Breitner
mailto:mail@joachim-breitner.de> wrote: Hi,
Am Freitag, den 05.01.2018, 13:42 -0500 schrieb Brandon Allbery: > Further complicated by the fact that that form used to be called a > "pattern signature" with accompanying extension, until that was > folded into ScopedTypeVariables extension.
which I find super confusing, because sometimes I want a signature on a pattern and it is counter-intuitive to me why I should not longer use the obviously named PatternSignatures extension but rather the at first glance unrelated ScopedTypeVariable extension.
But I am derailing the discussion a bit.
Cheers, Joachim
-- Joachim Breitner mail@joachim-breitner.de mailto:mail@joachim-breitner.de http://www.joachim-breitner.de/ https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.joachim-breitner.de%2F&data=02%7C01%7Csimonpj%40microsoft.com%7Ccca9ff6f4b2b4a32e61308d55680514e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636510031494207475&sdata=%2BWGJXq6S7IrWJzsYIZWdk%2BDa%2BSLtW8CfCiPHitgnArc%3D&reserved=0
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org mailto:ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=02%7C01%7Csimonpj%40microsoft.com%7Ccca9ff6f4b2b4a32e61308d55680514e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636510031494207475&sdata=L7reldRrJzSuxRhDTFUgNoy8zXHEbW96rqY8TpUeHxI%3D&reserved=0
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org mailto:ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=02%7C01%7Csimonpj%40microsoft.com%7Ccca9ff6f4b2b4a32e61308d55680514e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636510031494207475&sdata=L7reldRrJzSuxRhDTFUgNoy8zXHEbW96rqY8TpUeHxI%3D&reserved=0
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
participants (7)
-
Brandon Allbery
-
Iavor Diatchki
-
Joachim Breitner
-
Richard Eisenberg
-
Simon Peyton Jones
-
Spiwack, Arnaud
-
Sylvain Henry