[ghc-steering-committee] Proposal #356: new syntax for linear arrows

Simon Peyton Jones simonpj at microsoft.com
Mon Sep 14 14:56:27 UTC 2020


I am supportive.

I mildly prefer '%' to '^', purely on grounds of visibility.  But I do not feel strongly.

Simon

|  -----Original Message-----
|  From: ghc-steering-committee <ghc-steering-committee-
|  bounces at haskell.org> On Behalf Of Richard Eisenberg
|  Sent: 13 September 2020 23:12
|  To: Simon Peyton Jones via ghc-steering-committee <ghc-steering-
|  committee at haskell.org>
|  Subject: [ghc-steering-committee] Proposal #356: new syntax for linear
|  arrows
|  
|  Hi committee,
|  
|  Mathieu Boespflug has proposed a new syntax for linear arrows:
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
|  b.com%2Fghc-proposals%2Fghc-
|  proposals%2Fpull%2F356&data=02%7C01%7Csimonpj%40microsoft.com%7C054
|  4526238754e222e3208d85832156e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C
|  0%7C637356319418315258&sdata=3266N3ZptTbLQ2EpNgDJh1C1LarPmbUkXAgKcl
|  6%2BeE0%3D&reserved=0
|  
|  Currently (from the original linear types proposal), we have #-> to
|  denote a linear function, and # m -> to denote an arbitrary function
|  whose argument has multiplicity m. This proposal suggests three
|  changes:
|  
|  1. Drop #-> entirely.
|  2. Use ^ instead of # in the second form, but require that it be a
|  *prefix* usage of ^ (that is, the character after the ^ must not be
|  whitespace).
|  3. Introduce a new lexeme ^1 that is used to denote linear functions.
|  Alternative: use % in place of ^; % is observed to be more visually
|  apparent in some fonts than ^.
|  
|  In time, the hope is that rule (3) will no longer be needed, if we gain
|  overloaded numbers at the type level (when 1 :: Multiplicity will type-
|  check without a special rule).
|  
|  Motivations for this change come from the experience within Tweag of
|  using linear types. The change away from # also is to avoid a conflict
|  with overloaded labels, once those are allowed in types.
|  
|  The hope is that we can make a decision about this in time for release
|  with GHC 9.0. This proposal is already implemented:
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitla
|  b.haskell.org%2Fghc%2Fghc%2F-
|  %2Fmerge_requests%2F4020&data=02%7C01%7Csimonpj%40microsoft.com%7C0
|  544526238754e222e3208d85832156e%7C72f988bf86f141af91ab2d7cd011db47%7C1%
|  7C0%7C637356319418315258&sdata=kp4HBcTvHu6FPAREC4vD3mVfDMbnMztYgW%2
|  FPvHTUr0A%3D&reserved=0
|  
|  In conflict with our usual protocol, I will not make a recommendation
|  on this proposal, as I am conflicted with the proposer. However, I do
|  hope that we can come to a conclusion on this quickly, to avoid making
|  a backward-incompatible change after a release.
|  
|  We have four options:
|  A. Keep the syntax as it is.
|  B. Choose to go with ^
|  C. Choose to go with %
|  D. Choose to go with some other symbol. I don't think there is any
|  particular preference for any one symbol over another.
|  
|  Richard
|  _______________________________________________
|  ghc-steering-committee mailing list
|  ghc-steering-committee at haskell.org
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.
|  haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-
|  committee&data=02%7C01%7Csimonpj%40microsoft.com%7C0544526238754e22
|  2e3208d85832156e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637356319
|  418315258&sdata=tkqtcIuFROPvwmEG3gd9zPtcrbhL5cyVN4vNdJqEv1M%3D&
|  reserved=0


More information about the ghc-steering-committee mailing list