<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --> <title>Data/Char.hs</title> <link type='text/css' rel='stylesheet' href='hscolour.css' /> </head> <body> <pre><a name="line-1"></a><span class='hs-comment'>{-# OPTIONS_GHC -XNoImplicitPrelude #-}</span> <a name="line-2"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span> <a name="line-3"></a><span class='hs-comment'>-- |</span> <a name="line-4"></a><span class='hs-comment'>-- Module : Data.Char</span> <a name="line-5"></a><span class='hs-comment'>-- Copyright : (c) The University of Glasgow 2001</span> <a name="line-6"></a><span class='hs-comment'>-- License : BSD-style (see the file libraries/base/LICENSE)</span> <a name="line-7"></a><span class='hs-comment'>-- </span> <a name="line-8"></a><span class='hs-comment'>-- Maintainer : libraries@haskell.org</span> <a name="line-9"></a><span class='hs-comment'>-- Stability : stable</span> <a name="line-10"></a><span class='hs-comment'>-- Portability : portable</span> <a name="line-11"></a><span class='hs-comment'>--</span> <a name="line-12"></a><span class='hs-comment'>-- The Char type and associated operations.</span> <a name="line-13"></a><span class='hs-comment'>--</span> <a name="line-14"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span> <a name="line-15"></a> <a name="line-16"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <a name="line-17"></a> <span class='hs-layout'>(</span> <a name="line-18"></a> <span class='hs-conid'>Char</span> <a name="line-19"></a> <a name="line-20"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>String</span> <a name="line-21"></a> <a name="line-22"></a> <span class='hs-comment'>-- * Character classification</span> <a name="line-23"></a> <span class='hs-comment'>-- | Unicode characters are divided into letters, numbers, marks,</span> <a name="line-24"></a> <span class='hs-comment'>-- punctuation, symbols, separators (including spaces) and others</span> <a name="line-25"></a> <span class='hs-comment'>-- (including control characters).</span> <a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isControl</span><span class='hs-layout'>,</span> <span class='hs-varid'>isSpace</span> <a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isLower</span><span class='hs-layout'>,</span> <span class='hs-varid'>isUpper</span><span class='hs-layout'>,</span> <span class='hs-varid'>isAlpha</span><span class='hs-layout'>,</span> <span class='hs-varid'>isAlphaNum</span><span class='hs-layout'>,</span> <span class='hs-varid'>isPrint</span> <a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDigit</span><span class='hs-layout'>,</span> <span class='hs-varid'>isOctDigit</span><span class='hs-layout'>,</span> <span class='hs-varid'>isHexDigit</span> <a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isLetter</span><span class='hs-layout'>,</span> <span class='hs-varid'>isMark</span><span class='hs-layout'>,</span> <span class='hs-varid'>isNumber</span><span class='hs-layout'>,</span> <span class='hs-varid'>isPunctuation</span><span class='hs-layout'>,</span> <span class='hs-varid'>isSymbol</span><span class='hs-layout'>,</span> <span class='hs-varid'>isSeparator</span> <a name="line-30"></a> <a name="line-31"></a> <span class='hs-comment'>-- ** Subranges</span> <a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isAscii</span><span class='hs-layout'>,</span> <span class='hs-varid'>isLatin1</span> <a name="line-33"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isAsciiUpper</span><span class='hs-layout'>,</span> <span class='hs-varid'>isAsciiLower</span> <a name="line-34"></a> <a name="line-35"></a> <span class='hs-comment'>-- ** Unicode general categories</span> <a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>GeneralCategory</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>generalCategory</span> <a name="line-37"></a> <a name="line-38"></a> <span class='hs-comment'>-- * Case conversion</span> <a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>toUpper</span><span class='hs-layout'>,</span> <span class='hs-varid'>toLower</span><span class='hs-layout'>,</span> <span class='hs-varid'>toTitle</span> <span class='hs-comment'>-- :: Char -> Char</span> <a name="line-40"></a> <a name="line-41"></a> <span class='hs-comment'>-- * Single digit characters</span> <a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>digitToInt</span> <span class='hs-comment'>-- :: Char -> Int</span> <a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>intToDigit</span> <span class='hs-comment'>-- :: Int -> Char</span> <a name="line-44"></a> <a name="line-45"></a> <span class='hs-comment'>-- * Numeric representations</span> <a name="line-46"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>ord</span> <span class='hs-comment'>-- :: Char -> Int</span> <a name="line-47"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>chr</span> <span class='hs-comment'>-- :: Int -> Char</span> <a name="line-48"></a> <a name="line-49"></a> <span class='hs-comment'>-- * String representations</span> <a name="line-50"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>showLitChar</span> <span class='hs-comment'>-- :: Char -> ShowS</span> <a name="line-51"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>lexLitChar</span> <span class='hs-comment'>-- :: ReadS String</span> <a name="line-52"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>readLitChar</span> <span class='hs-comment'>-- :: ReadS Char </span> <a name="line-53"></a> <a name="line-54"></a> <span class='hs-comment'>-- Implementation checked wrt. Haskell 98 lib report, 1/99.</span> <a name="line-55"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span> <a name="line-56"></a> <a name="line-57"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span> <a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Base</span> <a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Arr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ix</span><span class='hs-layout'>)</span> <a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Real</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Show</span> <a name="line-62"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Read</span> <span class='hs-layout'>(</span><span class='hs-conid'>Read</span><span class='hs-layout'>,</span> <span class='hs-varid'>readLitChar</span><span class='hs-layout'>,</span> <span class='hs-varid'>lexLitChar</span><span class='hs-layout'>)</span> <a name="line-63"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Unicode</span> <a name="line-64"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Num</span> <a name="line-65"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Enum</span> <a name="line-66"></a><span class='hs-cpp'>#endif</span> <a name="line-67"></a> <a name="line-68"></a><span class='hs-cpp'>#ifdef __HUGS__</span> <a name="line-69"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Hugs</span><span class='hs-varop'>.</span><span class='hs-conid'>Prelude</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ix</span><span class='hs-layout'>)</span> <a name="line-70"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Hugs</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <a name="line-71"></a><span class='hs-cpp'>#endif</span> <a name="line-72"></a> <a name="line-73"></a><span class='hs-cpp'>#ifdef __NHC__</span> <a name="line-74"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <a name="line-75"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span><span class='hs-layout'>(</span><span class='hs-conid'>Char</span><span class='hs-layout'>,</span><span class='hs-conid'>String</span><span class='hs-layout'>)</span> <a name="line-76"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Char</span> <a name="line-77"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Ix</span> <a name="line-78"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>NHC</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <a name="line-79"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"WCsubst.h u_gencat"</span> <span class='hs-varid'>wgencat</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <a name="line-80"></a><span class='hs-cpp'>#endif</span> <a name="line-81"></a> <a name="line-82"></a><a name="digitToInt"></a><span class='hs-comment'>-- | Convert a single digit 'Char' to the corresponding 'Int'. </span> <a name="line-83"></a><span class='hs-comment'>-- This function fails unless its argument satisfies 'isHexDigit',</span> <a name="line-84"></a><span class='hs-comment'>-- but recognises both upper and lower-case hexadecimal digits</span> <a name="line-85"></a><span class='hs-comment'>-- (i.e. @\'0\'@..@\'9\'@, @\'a\'@..@\'f\'@, @\'A\'@..@\'F\'@).</span> <a name="line-86"></a><span class='hs-definition'>digitToInt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Int</span> <a name="line-87"></a><span class='hs-definition'>digitToInt</span> <span class='hs-varid'>c</span> <a name="line-88"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>isDigit</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>ord</span> <span class='hs-varid'>c</span> <span class='hs-comment'>-</span> <span class='hs-varid'>ord</span> <span class='hs-chr'>'0'</span> <a name="line-89"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>c</span> <span class='hs-varop'>>=</span> <span class='hs-chr'>'a'</span> <span class='hs-varop'>&&</span> <span class='hs-varid'>c</span> <span class='hs-varop'><=</span> <span class='hs-chr'>'f'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>ord</span> <span class='hs-varid'>c</span> <span class='hs-comment'>-</span> <span class='hs-varid'>ord</span> <span class='hs-chr'>'a'</span> <span class='hs-varop'>+</span> <span class='hs-num'>10</span> <a name="line-90"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>c</span> <span class='hs-varop'>>=</span> <span class='hs-chr'>'A'</span> <span class='hs-varop'>&&</span> <span class='hs-varid'>c</span> <span class='hs-varop'><=</span> <span class='hs-chr'>'F'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>ord</span> <span class='hs-varid'>c</span> <span class='hs-comment'>-</span> <span class='hs-varid'>ord</span> <span class='hs-chr'>'A'</span> <span class='hs-varop'>+</span> <span class='hs-num'>10</span> <a name="line-91"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-layout'>(</span><span class='hs-str'>"Char.digitToInt: not a digit "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- sigh</span> <a name="line-92"></a> <a name="line-93"></a><span class='hs-cpp'>#ifndef __GLASGOW_HASKELL__</span> <a name="line-94"></a><a name="isAsciiUpper"></a><span class='hs-definition'>isAsciiUpper</span><span class='hs-layout'>,</span> <span class='hs-varid'>isAsciiLower</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-95"></a><a name="isAsciiLower"></a><span class='hs-definition'>isAsciiLower</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>c</span> <span class='hs-varop'>>=</span> <span class='hs-chr'>'a'</span> <span class='hs-varop'>&&</span> <span class='hs-varid'>c</span> <span class='hs-varop'><=</span> <span class='hs-chr'>'z'</span> <a name="line-96"></a><span class='hs-definition'>isAsciiUpper</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>c</span> <span class='hs-varop'>>=</span> <span class='hs-chr'>'A'</span> <span class='hs-varop'>&&</span> <span class='hs-varid'>c</span> <span class='hs-varop'><=</span> <span class='hs-chr'>'Z'</span> <a name="line-97"></a><span class='hs-cpp'>#endif</span> <a name="line-98"></a> <a name="line-99"></a><span class='hs-comment'>-- | Unicode General Categories (column 2 of the UnicodeData table)</span> <a name="line-100"></a><span class='hs-comment'>-- in the order they are listed in the Unicode standard.</span> <a name="line-101"></a> <a name="line-102"></a><a name="GeneralCategory"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>GeneralCategory</span> <a name="line-103"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>UppercaseLetter</span> <span class='hs-comment'>-- ^ Lu: Letter, Uppercase</span> <a name="line-104"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>LowercaseLetter</span> <span class='hs-comment'>-- ^ Ll: Letter, Lowercase</span> <a name="line-105"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TitlecaseLetter</span> <span class='hs-comment'>-- ^ Lt: Letter, Titlecase</span> <a name="line-106"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ModifierLetter</span> <span class='hs-comment'>-- ^ Lm: Letter, Modifier</span> <a name="line-107"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>OtherLetter</span> <span class='hs-comment'>-- ^ Lo: Letter, Other</span> <a name="line-108"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>NonSpacingMark</span> <span class='hs-comment'>-- ^ Mn: Mark, Non-Spacing</span> <a name="line-109"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>SpacingCombiningMark</span> <span class='hs-comment'>-- ^ Mc: Mark, Spacing Combining</span> <a name="line-110"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>EnclosingMark</span> <span class='hs-comment'>-- ^ Me: Mark, Enclosing</span> <a name="line-111"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DecimalNumber</span> <span class='hs-comment'>-- ^ Nd: Number, Decimal</span> <a name="line-112"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>LetterNumber</span> <span class='hs-comment'>-- ^ Nl: Number, Letter</span> <a name="line-113"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>OtherNumber</span> <span class='hs-comment'>-- ^ No: Number, Other</span> <a name="line-114"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ConnectorPunctuation</span> <span class='hs-comment'>-- ^ Pc: Punctuation, Connector</span> <a name="line-115"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DashPunctuation</span> <span class='hs-comment'>-- ^ Pd: Punctuation, Dash</span> <a name="line-116"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>OpenPunctuation</span> <span class='hs-comment'>-- ^ Ps: Punctuation, Open</span> <a name="line-117"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ClosePunctuation</span> <span class='hs-comment'>-- ^ Pe: Punctuation, Close</span> <a name="line-118"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>InitialQuote</span> <span class='hs-comment'>-- ^ Pi: Punctuation, Initial quote</span> <a name="line-119"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>FinalQuote</span> <span class='hs-comment'>-- ^ Pf: Punctuation, Final quote</span> <a name="line-120"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>OtherPunctuation</span> <span class='hs-comment'>-- ^ Po: Punctuation, Other</span> <a name="line-121"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>MathSymbol</span> <span class='hs-comment'>-- ^ Sm: Symbol, Math</span> <a name="line-122"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CurrencySymbol</span> <span class='hs-comment'>-- ^ Sc: Symbol, Currency</span> <a name="line-123"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ModifierSymbol</span> <span class='hs-comment'>-- ^ Sk: Symbol, Modifier</span> <a name="line-124"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>OtherSymbol</span> <span class='hs-comment'>-- ^ So: Symbol, Other</span> <a name="line-125"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Space</span> <span class='hs-comment'>-- ^ Zs: Separator, Space</span> <a name="line-126"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>LineSeparator</span> <span class='hs-comment'>-- ^ Zl: Separator, Line</span> <a name="line-127"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ParagraphSeparator</span> <span class='hs-comment'>-- ^ Zp: Separator, Paragraph</span> <a name="line-128"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Control</span> <span class='hs-comment'>-- ^ Cc: Other, Control</span> <a name="line-129"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Format</span> <span class='hs-comment'>-- ^ Cf: Other, Format</span> <a name="line-130"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Surrogate</span> <span class='hs-comment'>-- ^ Cs: Other, Surrogate</span> <a name="line-131"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>PrivateUse</span> <span class='hs-comment'>-- ^ Co: Other, Private Use</span> <a name="line-132"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>NotAssigned</span> <span class='hs-comment'>-- ^ Cn: Other, Not Assigned</span> <a name="line-133"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Enum</span><span class='hs-layout'>,</span> <span class='hs-conid'>Read</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>,</span> <span class='hs-conid'>Bounded</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ix</span><span class='hs-layout'>)</span> <a name="line-134"></a> <a name="line-135"></a><a name="generalCategory"></a><span class='hs-comment'>-- | The Unicode general category of the character.</span> <a name="line-136"></a><span class='hs-definition'>generalCategory</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>GeneralCategory</span> <a name="line-137"></a><span class='hs-cpp'>#if defined(__GLASGOW_HASKELL__) || defined(__NHC__)</span> <a name="line-138"></a><span class='hs-definition'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toEnum</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>wgencat</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>ord</span> <span class='hs-varid'>c</span> <a name="line-139"></a><span class='hs-cpp'>#endif</span> <a name="line-140"></a><span class='hs-cpp'>#ifdef __HUGS__</span> <a name="line-141"></a><span class='hs-definition'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toEnum</span> <span class='hs-layout'>(</span><span class='hs-varid'>primUniGenCat</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <a name="line-142"></a><span class='hs-cpp'>#endif</span> <a name="line-143"></a> <a name="line-144"></a><span class='hs-comment'>-- derived character classifiers</span> <a name="line-145"></a> <a name="line-146"></a><a name="isLetter"></a><span class='hs-comment'>-- | Selects alphabetic Unicode characters (lower-case, upper-case and</span> <a name="line-147"></a><span class='hs-comment'>-- title-case letters, plus letters of caseless scripts and modifiers letters).</span> <a name="line-148"></a><span class='hs-comment'>-- This function is equivalent to 'Data.Char.isAlpha'.</span> <a name="line-149"></a><span class='hs-definition'>isLetter</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-150"></a><span class='hs-definition'>isLetter</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span> <a name="line-151"></a> <span class='hs-conid'>UppercaseLetter</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-152"></a> <span class='hs-conid'>LowercaseLetter</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-153"></a> <span class='hs-conid'>TitlecaseLetter</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-154"></a> <span class='hs-conid'>ModifierLetter</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-155"></a> <span class='hs-conid'>OtherLetter</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-156"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>False</span> <a name="line-157"></a> <a name="line-158"></a><a name="isMark"></a><span class='hs-comment'>-- | Selects Unicode mark characters, e.g. accents and the like, which</span> <a name="line-159"></a><span class='hs-comment'>-- combine with preceding letters.</span> <a name="line-160"></a><span class='hs-definition'>isMark</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-161"></a><span class='hs-definition'>isMark</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span> <a name="line-162"></a> <span class='hs-conid'>NonSpacingMark</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-163"></a> <span class='hs-conid'>SpacingCombiningMark</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-164"></a> <span class='hs-conid'>EnclosingMark</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-165"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>False</span> <a name="line-166"></a> <a name="line-167"></a><a name="isNumber"></a><span class='hs-comment'>-- | Selects Unicode numeric characters, including digits from various</span> <a name="line-168"></a><span class='hs-comment'>-- scripts, Roman numerals, etc.</span> <a name="line-169"></a><span class='hs-definition'>isNumber</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-170"></a><span class='hs-definition'>isNumber</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span> <a name="line-171"></a> <span class='hs-conid'>DecimalNumber</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-172"></a> <span class='hs-conid'>LetterNumber</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-173"></a> <span class='hs-conid'>OtherNumber</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-174"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>False</span> <a name="line-175"></a> <a name="line-176"></a><a name="isPunctuation"></a><span class='hs-comment'>-- | Selects Unicode punctuation characters, including various kinds</span> <a name="line-177"></a><span class='hs-comment'>-- of connectors, brackets and quotes.</span> <a name="line-178"></a><span class='hs-definition'>isPunctuation</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-179"></a><span class='hs-definition'>isPunctuation</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span> <a name="line-180"></a> <span class='hs-conid'>ConnectorPunctuation</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-181"></a> <span class='hs-conid'>DashPunctuation</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-182"></a> <span class='hs-conid'>OpenPunctuation</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-183"></a> <span class='hs-conid'>ClosePunctuation</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-184"></a> <span class='hs-conid'>InitialQuote</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-185"></a> <span class='hs-conid'>FinalQuote</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-186"></a> <span class='hs-conid'>OtherPunctuation</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-187"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>False</span> <a name="line-188"></a> <a name="line-189"></a><a name="isSymbol"></a><span class='hs-comment'>-- | Selects Unicode symbol characters, including mathematical and</span> <a name="line-190"></a><span class='hs-comment'>-- currency symbols.</span> <a name="line-191"></a><span class='hs-definition'>isSymbol</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-192"></a><span class='hs-definition'>isSymbol</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span> <a name="line-193"></a> <span class='hs-conid'>MathSymbol</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-194"></a> <span class='hs-conid'>CurrencySymbol</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-195"></a> <span class='hs-conid'>ModifierSymbol</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-196"></a> <span class='hs-conid'>OtherSymbol</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-197"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>False</span> <a name="line-198"></a> <a name="line-199"></a><a name="isSeparator"></a><span class='hs-comment'>-- | Selects Unicode space and separator characters.</span> <a name="line-200"></a><span class='hs-definition'>isSeparator</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span> <a name="line-201"></a><span class='hs-definition'>isSeparator</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>generalCategory</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>of</span> <a name="line-202"></a> <span class='hs-conid'>Space</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-203"></a> <span class='hs-conid'>LineSeparator</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-204"></a> <span class='hs-conid'>ParagraphSeparator</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>True</span> <a name="line-205"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>False</span> <a name="line-206"></a> <a name="line-207"></a><span class='hs-cpp'>#ifdef __NHC__</span> <a name="line-208"></a><a name="toTitle"></a><span class='hs-comment'>-- dummy implementation</span> <a name="line-209"></a><span class='hs-definition'>toTitle</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Char</span> <a name="line-210"></a><span class='hs-definition'>toTitle</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toUpper</span> <a name="line-211"></a><span class='hs-cpp'>#endif</span> </pre></body> </html>