Haskell Hierarchical Libraries (base package)ContentsIndex
Data.Char
Portabilityportable
Stabilitystable
Maintainerlibraries@haskell.org
Contents
Character classification
Case conversion
Single digit characters
Numeric representations
String representations
Description
The Char type and associated operations.
Synopsis
data Char
type String = [Char]
isAscii :: Char -> Bool
isLatin1 :: Char -> Bool
isControl :: Char -> Bool
isSpace :: Char -> Bool
isLower :: Char -> Bool
isUpper :: Char -> Bool
isAlpha :: Char -> Bool
isAlphaNum :: Char -> Bool
isPrint :: Char -> Bool
isDigit :: Char -> Bool
isOctDigit :: Char -> Bool
isHexDigit :: Char -> Bool
toUpper :: Char -> Char
toLower :: Char -> Char
digitToInt :: Char -> Int
intToDigit :: Int -> Char
ord :: Char -> Int
chr :: Int -> Char
showLitChar :: Char -> ShowS
lexLitChar :: ReadS String
readLitChar :: ReadS Char
Documentation
data Char

The character type Char is an enumeration whose values represent Unicode (or equivalently ISO 10646) characters. This set extends the ISO 8859-1 (Latin-1) character set (the first 256 charachers), which is itself an extension of the ASCII character set (the first 128 characters). A character literal in Haskell has type Char.

To convert a Char to or from the corresponding Int value defined by Unicode, use toEnum and fromEnum from the Enum class respectively (or equivalently ord and chr).

show/hide Instances
type String = [Char]
A String is a list of characters. String constants in Haskell are values of type String.
Character classification
Unicode characters are divided into letters, numbers, marks, punctuation, symbols, separators (including spaces) and others (including control characters). The full set of Unicode character attributes is not accessible in this library.
isAscii :: Char -> Bool
Selects the first 128 characters of the Unicode character set, corresponding to the ASCII character set.
isLatin1 :: Char -> Bool
Selects the first 256 characters of the Unicode character set, corresponding to the ISO 8859-1 (Latin-1) character set.
isControl :: Char -> Bool
Selects control characters, which are the non-printing characters of the Latin-1 subset of Unicode.
isSpace :: Char -> Bool
Selects white-space characters in the Latin-1 range. (In Unicode terms, this includes spaces and some control characters.)
isLower :: Char -> Bool
Selects lower-case alphabetic Unicode characters (letters).
isUpper :: Char -> Bool
Selects alphabetic Unicode characters (letters) that are not lower-case. (In Unicode terms, this includes letters in upper and title cases, as well as modifier letters and other letters.)
isAlpha :: Char -> Bool

Selects alphabetic Unicode characters (letters).

Note: the Haskell 98 definition of isAlpha is:

   isAlpha c = isUpper c || isLower c

the implementation here diverges from the Haskell 98 definition in the sense that Unicode alphabetic characters which are neither upper nor lower case will still be identified as alphabetic by isAlpha.

isAlphaNum :: Char -> Bool

Selects alphabetic or numeric digit 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.

isPrint :: Char -> Bool
Selects printable Unicode characters (letters, numbers, marks, punctuation, symbols and spaces).
isDigit :: Char -> Bool
Selects ASCII digits, i.e. '0'..'9'.
isOctDigit :: Char -> Bool
Selects ASCII octal digits, i.e. '0'..'7'.
isHexDigit :: Char -> Bool
Selects ASCII hexadecimal digits, i.e. '0'..'9', 'a'..'f', 'A'..'F'.
Case conversion
toUpper :: Char -> Char
Convert a letter to the corresponding upper-case letter, leaving any other character unchanged. Any Unicode letter which has an upper-case equivalent is transformed.
toLower :: Char -> Char
Convert a letter to the corresponding lower-case letter, leaving any other character unchanged. Any Unicode letter which has a lower-case equivalent is transformed.
Single digit characters
digitToInt :: Char -> Int
Convert a single digit Char to the corresponding Int. This function fails unless its argument satisfies isHexDigit, but recognises both upper and lower-case hexadecimal digits (i.e. '0'..'9', 'a'..'f', 'A'..'F').
intToDigit :: Int -> Char
Convert an Int in the range 0..15 to the corresponding single digit Char. This function fails on other inputs, and generates lower-case hexadecimal digits.
Numeric representations
ord :: Char -> Int
The fromEnum method restricted to the type Char.
chr :: Int -> Char
The toEnum method restricted to the type Char.
String representations
showLitChar :: Char -> ShowS

Convert a character to a string using only printable characters, using Haskell source-language escape conventions. For example:

 showLitChar '\n' s  =  "\\n" ++ s
lexLitChar :: ReadS String

Read a string representation of a character, using Haskell source-language escape conventions. For example:

 lexLitChar  "\\nHello"  =  [("\\n", "Hello")]
readLitChar :: ReadS Char

Read a string representation of a character, using Haskell source-language escape conventions, and convert it to the character that it encodes. For example:

 readLitChar "\\nHello"  =  [('\n', "Hello")]
Produced by Haddock version 0.7