Fixes isAlphaNum re. isAlpha/isNumber and doc fix (trac issue #10412)
authorARJANEN Loïc Jean David <arjanen.loic@gmail.com>
Fri, 20 Apr 2018 00:48:28 +0000 (20:48 -0400)
committerBen Gamari <ben@smart-cactus.org>
Fri, 20 Apr 2018 00:48:44 +0000 (20:48 -0400)
Corrects the inconsistency between Data.Char.isAlphaNum,
Data.Char.isAlpha and Data.Char.isNumber. Indeed, isAlphaNum was
returning True not only when isAlpha or isNumber returned True but
also when isMark did. The selectors for the Mn, Mc and Me general
categories where removed from the macro generating u_iswalnum in
ubconfc.

Also, Data.Char.isAlphaNum's documentation was changed to state that
isAlphaNum returns true not only for Unicode number digits but for
Unicode numbers in general in Unicode.hs.

Signed-off-by: ARJANEN Loïc Jean David <arjanen.loic@gmail.com>
Reviewers: hvr, ekmett, lelf, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #10412

Differential Revision: https://phabricator.haskell.org/D4593

libraries/base/GHC/Unicode.hs
libraries/base/cbits/ubconfc

index 1b8cd05..df7c978 100644 (file)
@@ -220,11 +220,12 @@ isLower                 :: Char -> Bool
 -- This function is equivalent to 'Data.Char.isLetter'.
 isAlpha                 :: Char -> Bool
 
--- | Selects alphabetic or numeric digit Unicode characters.
+-- | Selects alphabetic or numeric Unicode characters.
 --
--- Note that numeric digits outside the ASCII range are selected by this
--- function but not by 'isDigit'.  Such digits may be part of identifiers
--- but are not used by the printer and reader to represent numbers.
+-- Note that numeric digits outside the ASCII range, as well as numeric
+-- characters which aren't digits, are selected by this function but not by
+-- 'isDigit'. Such characters may be part of identifiers but are not used by
+-- the printer and reader to represent numbers.
 isAlphaNum              :: Char -> Bool
 
 -- | Selects ASCII digits, i.e. @\'0\'@..@\'9\'@.
index 509049d..4d32586 100644 (file)
@@ -322,7 +322,6 @@ unipred(u_iswalpha,(GENCAT_LL|GENCAT_LU|GENCAT_LT|GENCAT_LM|GENCAT_LO))
 unipred(u_iswdigit,GENCAT_ND)
 
 unipred(u_iswalnum,(GENCAT_LT|GENCAT_LU|GENCAT_LL|GENCAT_LM|GENCAT_LO|
-                   GENCAT_MC|GENCAT_ME|GENCAT_MN|
                    GENCAT_NO|GENCAT_ND|GENCAT_NL))
 
 #define caseconv(p,to) \\
@@ -341,5 +340,4 @@ HsInt u_gencat(HsInt c)
 {
        return getrule(allchars,NUM_BLOCKS,c)->catnumber;
 }
-
 EOF