module Hugs.Char (
isAscii, isLatin1, isControl, isPrint, isSpace, isUpper, isLower,
isAlpha, isDigit, isOctDigit, isHexDigit, isAlphaNum,
intToDigit,
toUpper, toLower,
ord, chr,
readLitChar, showLitChar, lexLitChar
) where
import Hugs.Prelude(
isSpace, isUpper, isLower,
isAlpha, isDigit, isOctDigit, isHexDigit, isAlphaNum,
readLitChar, showLitChar, lexLitChar)
-- The Hugs Char type covers only the ISO 8859-1 (Latin-1) subset of Unicode,
-- i.e. '\0' to '\xff'.
-- Character-testing operations (some others are in Hugs.Prelude)
isAscii, isLatin1, isControl, isPrint :: Char -> Bool
isAscii c = c < '\x80'
isLatin1 c = True -- c <= '\xff'
isControl c = c < ' ' || c >= '\DEL' && c <= '\x9f'
isPrint c = not (isControl c)
-- Digit conversion operations
intToDigit :: Int -> Char
intToDigit i
| i >= 0 && i <= 9 = toEnum (fromEnum '0' + i)
| i >= 10 && i <= 15 = toEnum (fromEnum 'a' + i - 10)
| otherwise = error "Char.intToDigit: not a digit"
-- Case-changing operations
toUpper :: Char -> Char
toUpper '\xdf' = '\xdf' -- lower, but no upper in Latin-1
toUpper '\xff' = '\xff' -- lower, but no upper in Latin-1
toUpper c | isLower c = toEnum (fromEnum c - fromEnum 'a' + fromEnum 'A')
| otherwise = c
toLower :: Char -> Char
toLower c | isUpper c = toEnum (fromEnum c - fromEnum 'A' + fromEnum 'a')
| otherwise = c
-- Character code functions
ord :: Char -> Int
ord = fromEnum
chr :: Int -> Char
chr = toEnum
(HTML for this module was generated on 2006-08-12. About the conversion tool.)