(original) (raw)
{-# LANGUAGE Trustworthy #-} {-# LANGUAGE NoImplicitPrelude #-}
module Data.Char ( Char
, [isControl](GHC.Unicode.html#isControl), [isSpace](GHC.Unicode.html#isSpace)
, [isLower](GHC.Unicode.html#isLower), [isUpper](GHC.Unicode.html#isUpper), [isAlpha](GHC.Unicode.html#isAlpha), [isAlphaNum](GHC.Unicode.html#isAlphaNum), [isPrint](GHC.Unicode.html#isPrint)
, [isDigit](GHC.Unicode.html#isDigit), [isOctDigit](GHC.Unicode.html#isOctDigit), [isHexDigit](GHC.Unicode.html#isHexDigit)
, [isLetter](Data.Char.html#isLetter), [isMark](Data.Char.html#isMark), [isNumber](Data.Char.html#isNumber), [isPunctuation](GHC.Unicode.html#isPunctuation), [isSymbol](GHC.Unicode.html#isSymbol), [isSeparator](Data.Char.html#isSeparator)
, [isAscii](GHC.Unicode.html#isAscii), [isLatin1](GHC.Unicode.html#isLatin1)
, [isAsciiUpper](GHC.Unicode.html#isAsciiUpper), [isAsciiLower](GHC.Unicode.html#isAsciiLower)
, [GeneralCategory](GHC.Unicode.html#GeneralCategory)(..), [generalCategory](GHC.Unicode.html#generalCategory)
, [toUpper](GHC.Unicode.html#toUpper), [toLower](GHC.Unicode.html#toLower), [toTitle](GHC.Unicode.html#toTitle)
, [digitToInt](Data.Char.html#digitToInt)
, [intToDigit](GHC.Show.html#intToDigit)
, [ord](GHC.Base.html#ord)
, [chr](GHC.Char.html#chr)
, [showLitChar](GHC.Show.html#showLitChar)
, [lexLitChar](GHC.Read.html#lexLitChar)
, [readLitChar](GHC.Read.html#readLitChar)
) where
import GHC.Base import GHC.Char import GHC.Real (fromIntegral) import GHC.Show import GHC.Read (readLitChar, lexLitChar) import GHC.Unicode import GHC.Num
digitToInt :: Char -> Int digitToInt c | (fromIntegral dec::Word) <= 9 = dec | (fromIntegral hexl::Word) <= 5 = hexl + 10 | (fromIntegral hexu::Word) <= 5 = hexu + 10 | otherwise = errorWithoutStackTrace ("Char.digitToInt: not a digit " ++ show c) where dec = ord c - ord '0' hexl = ord c - ord 'a' hexu = ord c - ord 'A'
isLetter :: Char -> Bool isLetter c = case generalCategory c of UppercaseLetter -> True LowercaseLetter -> True TitlecaseLetter -> True ModifierLetter -> True OtherLetter -> True _ -> False
isMark :: Char -> Bool isMark c = case generalCategory c of NonSpacingMark -> True SpacingCombiningMark -> True EnclosingMark -> True _ -> False
isNumber :: Char -> Bool isNumber c = case generalCategory c of DecimalNumber -> True LetterNumber -> True OtherNumber -> True _ -> False
isSeparator :: Char -> Bool isSeparator c = case generalCategory c of Space -> True LineSeparator -> True ParagraphSeparator -> True _ -> False