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 <ghc-devs@haskell.org> | 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
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 <ghc-devs@haskell.org> | 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 <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 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 <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 <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 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 <mail@joachim-breitner.de>; 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 <iavor.diatchki@gmail.com<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 <mail@joachim-breitner.de<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>
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 <mail@joachim-breitner.de>; 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 <iavor.diatchki@gmail.com <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 <mail@joachim-breitner.de <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