Proposal: Treat OtherLetter as lower case in the grammar

Antonio Nikishaev a at lelf.me
Thu Aug 14 15:53:39 UTC 2014


I'd like to fix more of our unicode mess while we're at it.

For example Mn (non-spacing combining marks) should allowed in
varid_{cont}, so it won't be like this:

  h> let é=() in é
  ()

  h> let x́=() in x́
  <interactive>:6:6: lexical error at character '\769'

(that’s because x́ is denormalized and is actually 2 code points).

[:Mc:] probably too. Also we can include include unicode ′ ″ ‴ ⁗ primes
(there's already a proposal for this IIRC).

We have some prior work to look at, — that is at least the java language
specification and UAX #31. One problem is that doing it perfectly will
require normalization (but there's always the java way — to just ignore
it).


(I'm willing to formulate everything if there's some agreement to fix
this.)



Edward Kmett <ekmett at gmail.com> writes:

> Back in 2008 or so, GHC changed the behavior of unicode characters in
> the parser that parse as OtherLetter to make them parse as lower case
> so that languages like Japanese that lack case could be used in
> identifier names:
>
> https://ghc.haskell.org/trac/ghc/ticket/1103
>
> In a recent thread on reddit Lennart Augustsson pointed out that this
> change 
> was never backported to Haskell'.
>
> http://www.reddit.com/r/haskell/comments/2dce3d/%E0%B2%A0_%E0%B2%A0_string_
> a/cjo68ij
>
> Would it make sense to adopt this change in the language standard?
>
> Marlow when he made the change to GHC noted he was considering
> bringing it up to Haskell' but here we are 6 years later.





More information about the Haskell-prime mailing list