Permitting trailing commas for record syntax ADT declarations
Andreas Abel
abela at chalmers.se
Wed Sep 24 08:48:40 UTC 2014
I agree with Edward that TupleSections are too useful to trade for more
convenience to write large tuples on the *expression* level.
(If you habitually write write large tuple expressions instead of using
records, you should revisit your coding style, seriously!)
However, I see no problem to allow extra commas in *administrative*
tuples like in import/export lists. Thus, I see no problem if these two
kinds of tuples adhere to different syntax rules.
In previous discussions, there was a caveat raised that extra commata in
lists and tuples mean something else.
[,a,b,] is [a,b]
(,a,b,) is a tuple section
However, I never felt like having list sections would see abundant
usage. Thus, this discrepancy is ok, imho.
Cheers,
Andreas
On 24.09.2014 08:50, Edward Kmett wrote:
> I'm personally of the "it should be a language extension like everything
> else" mindset. Sure, it is a pain, but then so is working with
> EmptyCase, TupleSections, DoRec, EmptyDataDecls, ImplicitParams,
> KindSignatures, MultiWayIf, TypeOperators, UnicodeSyntax, etc. All of
> which just make a few more programs compile in the same sense, and fit
> into the gaps in the existing grammar.
>
> The conflict with TupleSections came up the last time this was proposed.
>
> If we limit it to record-like notions, and import/export lists, then we
> don't have to deal with conflicts with TupleSections and while it is
> inconsistent to have tuples behave differently, than other
> comma-separated lists, I'd really rather retain tuple sections, which I
> use somewhat heavily, than lose them to mindless uniformity over how we
> handle comma-separated lists.
>
> I use TupleSections a fair bit, whereas I've adopted prefixed
> comma-lists in Haskell to avoid the need for an extension like this one,
> so it'd be quite a shift in my programming style to get to where this
> helps me. The one place I'd really want something like this proposal is
> for the first line of my export list, where adopting the prefixed ','
> convention + haddock sections makes for an annoying visual asymmetry.
>
> -Edward
>
> On Tue, Sep 23, 2014 at 4:55 AM, Simon Peyton Jones
> <simonpj at microsoft.com <mailto:simonpj at microsoft.com>> wrote:
>
> PS I have to admit that GHC already fails to adhere to H-2010 by
> accepting trailing commas in module import lists, *without* a
> language extension. That is naughty, but I suppose it is a foot in
> the door. What to others think?
>
> Incidentally, trailing commas in tuples have quite a different
> meaning. With TupleSections, (a,,b,) means \x y -> (a,x,b,y).
>
> Simon
>
> | -----Original Message-----
> | From: Simon Peyton Jones
> | Sent: 23 September 2014 08:32
> | To: 'Alexander Berntsen'; Johan Tibell
> | Cc: ghc-devs at haskell.org <mailto:ghc-devs at haskell.org>
> | Subject: RE: Permitting trailing commas for record syntax ADT
> | declarations
> |
> | | > have a language extension TrailingCommas (or something) to enable
> | | > the extension
> | | For clarification: are you overruling the "do we sneak it in HEAD or
> | | use pragma(s)"-vote and telling me to do the latter?
> |
> | Well, it *is* a language extension, exactly like lots of other
> language
> | extensions, isn't it? (E.g. UnicodeSyntax.) What alternative action,
> | exactly, are you proposing? Why do you propose to treat it
> differently
> | to other language extensions? I would be reluctant to simply add it
> | without any indication; then GHC would accept non-Haskell 2010
> programs.
> | And we have not done that with other extensions.
> |
> | Simon
> |
> | |
> | | If we can sneak it into HEAD (this is @ you Johan, too), I suggest
> | | that someone applies my patches to make import and export lists
> | | support leading commas (presently they only support trailing commas,
> | | per the report) -- and following this I can just send a bunch of
> | | "Permit leading/trailing ',' in Foo" patches to Phabricator, and you
> | | guys can bikeshed over there about which ones you actually want to
> | | commit. ;-)
> | |
> | | If I am to go down the pragma route, I guess I can make a
> | | RudundantCommas pragma or something like that, that implements
> | | trailing commas for imports/exports, and leading/trailing commas for
> | | the suggestions in this thread.
> | |
> | | I'm +1 on the GHC HEAD route, but I'm not exactly violently
> opposed to
> | | the pragma route either.
> | | - --
> | | Alexander
> | | alexander at plaimi.net <mailto:alexander at plaimi.net>
> | | https://secure.plaimi.net/~alexander
> | | -----BEGIN PGP SIGNATURE-----
> | | Version: GnuPG v2
> | | Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
> | |
> | | iF4EAREIAAYFAlQhHRoACgkQRtClrXBQc7U0WAD+Ixdah2pHMoeLiTGQJf0JLwDR
> | | I2dxYS7yaKyOHuHcUuEBAKh6RQmmpztz82yt/KCw0n2md3pf4n8yc5tt9s9k3FW3
> | | =FfHX
> | | -----END PGP SIGNATURE-----
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org <mailto:ghc-devs at haskell.org>
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
>
>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
--
Andreas Abel <>< Du bist der geliebte Mensch.
Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden
andreas.abel at gu.se
http://www2.tcs.ifi.lmu.de/~abel/
More information about the ghc-devs
mailing list