{-# OPTIONS_GHC -cpp #-} module HaskellChars where import Char
This module collects the definitions from the Lexical Syntax in appendix B.3 of the (revised) Haskell 98 report that define sets of characters. These sets are referred to in the rest of the lexical syntax, which is given in module HaskellLexicalSyntax.
ASCII characters are represented by themselves, while non-ASCII characters are represented by the class they belong to.
data HaskellChar = ASCII Char | UniWhite -- any Unicode character defined as whitespace | UniSymbol -- any Unicode symbol or punctuation | UniDigit -- any Unicode numeric | UniLarge -- any uppercase or titlecase Unicode letter | UniSmall -- any Unicode lowercase letter deriving (Eq,Ord{-,Show-}) acs = map ASCII -- Character classifications: special = acs "(),;[]`{}" creturn = acs "\r" linefeed = acs "\LF" vertab = acs "\VT" formfeed = acs "\FF" space = acs " \xa0" tab = acs "\t" uniWhite = [UniWhite] cany = graphic++space++tab graphic = small++large++symbol++digit++special++acs ":\"'"++latin1Print small = ascSmall++uniSmall++acs "_" ascSmall = acs ['a'..'z'] uniSmall = [UniSmall] ++acs latin1Lower -- because of isSymbol workaround large = ascLarge++uniLarge ascLarge = acs ['A'..'Z'] uniLarge = [UniLarge] ++acs latin1Upper -- because of isSymbol workaround symbol = ascSymbol++uniSymbol ascSymbol = acs "!#$%&*+./<=>?@\\^|-~" uniSymbol = [UniSymbol]++acs latin1Symbol Plain-text version of HaskellChars.hs | Valid HTML?