Data.Char
| Авторские права | (c) Университет Глазго, 2001 |
|---|---|
| Лицензия | В стиле BSD (см. файл libraries/base/LICENSE) |
| Сопровождающий | libraries@haskell.org |
| Стабильность | стабильный |
| Переносимость | переносимый |
| Безопасный Haskell | Доверенный |
| Язык | Haskell2010 |
Описание
Тип Char и связанные с ним операции.
data Char Исходный код
Тип символа Char представляет кодовое пространство Unicode, а его элементы являются кодовыми точками, как определено в определениях D9 и D10 стандарта Unicode.
Символьные литералы в Haskell заключаются в одинарные кавычки: 'Q', 'Я' или 'Ω'. Чтобы представить саму одинарную кавычку, используйте '\'', а чтобы представить обратную косую черту — '\\'. Полную грамматику можно найти в разделе 2.6 отчёта о языке Haskell 2010.
Чтобы задать символ по его кодовой точке, можно использовать десятичную, шестнадцатеричную или восьмеричную запись: '\65', '\x41' и '\o101' — альтернативные формы записи 'A'. Наибольшая кодовая точка — '\x10ffff'.
Для управляющих символов ASCII предусмотрен специальный синтаксис экранирования:
| Экранированная запись | Альтернативы | Значение |
|---|---|---|
'\NUL' |
'\0' |
нулевой символ |
'\SOH' |
'\1' |
начало заголовка |
'\STX' |
'\2' |
начало текста |
'\ETX' |
'\3' |
конец текста |
'\EOT' |
'\4' |
конец передачи |
'\ENQ' |
'\5' |
запрос |
'\ACK' |
'\6' |
подтверждение |
'\BEL' |
'\7', '\a'
|
звонок (предупреждение) |
'\BS' |
'\8', '\b'
|
забой |
'\HT' |
'\9', '\t'
|
горизонтальная табуляция |
'\LF' |
'\10', '\n'
|
перевод строки (новая строка) |
'\VT' |
'\11', '\v'
|
вертикальная табуляция |
'\FF' |
'\12', '\f'
|
перевод страницы |
'\CR' |
'\13', '\r'
|
возврат каретки |
'\SO' |
'\14' |
выключение сдвига |
'\SI' |
'\15' |
включение сдвига |
'\DLE' |
'\16' |
экранирование канала данных |
'\DC1' |
'\17' |
управление устройством 1 |
'\DC2' |
'\18' |
управление устройством 2 |
'\DC3' |
'\19' |
управление устройством 3 |
'\DC4' |
'\20' |
управление устройством 4 |
'\NAK' |
'\21' |
отрицательное подтверждение |
'\SYN' |
'\22' |
синхронный простой |
'\ETB' |
'\23' |
конец блока передачи |
'\CAN' |
'\24' |
отмена |
'\EM' |
'\25' |
конец носителя |
'\SUB' |
'\26' |
замена |
'\ESC' |
'\27' |
выход |
'\FS' |
'\28' |
разделитель файлов |
'\GS' |
'\29' |
разделитель групп |
'\RS' |
'\30' |
разделитель записей |
'\US' |
'\31' |
разделитель единиц |
'\SP' |
'\32', ' '
|
пробел |
'\DEL' |
'\127' |
удаление |
Экземпляры
| IsChar Char Источник | Начиная с: base-2.1 |
| PrintfArg Char Источник | Начиная с: base-2.1 |
Определён в Text.Printf | |
| Eq Char Источник | |
| Ord Char Источник | |
Определён в GHC.Internal.Classes | |
| Data Char Источник | Начиная с: base-4.0.0.0 |
Определён в GHC.Internal.Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Char -> c Char Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Char Источник toConstr :: Char -> Constr Источник dataTypeOf :: Char -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Char) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Char) Источник gmapT :: (forall b. Data b => b -> b) -> Char -> Char Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Char -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Char -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Char -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Char -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Char -> m Char Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Char -> m Char Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Char -> m Char Источник | |
| Bounded Char Источник | Начиная с: base-2.1 |
| Enum Char Источник | Начиная с: base-2.1 |
| Storable Char Источник | Начиная с: base-2.1 |
Определён в GHC.Internal.Foreign.Storable МетодыsizeOf :: Char -> Int Источник alignment :: Char -> Int Источник peekElemOff :: Ptr Char -> Int -> IO Char Источник pokeElemOff :: Ptr Char -> Int -> Char -> IO () Источник peekByteOff :: Ptr b -> Int -> IO Char Источник pokeByteOff :: Ptr b -> Int -> Char -> IO () Источник | |
| Ix Char Источник | Начиная с: base-2.1 |
Определён в GHC.Internal.Ix | |
| Read Char Источник | Начиная с: base-2.1 |
| Show Char Источник | Начиная с: base-2.1 |
| TestCoercion SChar Источник | Начиная с: base-4.18.0.0 |
Определён в GHC.Internal.Generics Связанные типы
| |||||
| Show (URec Char p) Источник | Начиная с: base-4.9.0.0 |
||||
| data URec Char (p :: k) Источник |
Используется для обозначения вхождений Начиная с: base-4.9.0.0 |
||||
| type Compare (a :: Char) (b :: Char) Источник | |||||
Определён в GHC.Internal.Data.Type.Ord | |||||
| type Rep1 (URec Char :: k -> Type) Источник | Начиная с: base-4.9.0.0 |
||||
Определён в GHC.Internal.Generics | |||||
| type Rep (URec Char p) Источник | Начиная с: base-4.9.0.0 |
||||
Определён в GHC.Internal.Generics | |||||
Классификация символов
Символы Unicode делятся на буквы, цифры, знаки, знаки препинания, символы, разделители (включая пробелы) и прочие символы (включая управляющие).
isControl :: Char -> Bool Источник
Выбирает управляющие символы — непечатаемые символы из подмножества Latin-1 стандарта Unicode.
isSpace :: Char -> Bool Источник
Возвращает True для любого пробельного символа Unicode и для управляющих символов \t, \n, \r, \f, \v.
isLower :: Char -> Bool Источник
Выбирает строчные буквенные символы Unicode (буквы).
Примечание: этот предикат не работает для символов, похожих на буквы, например: 'ⓐ' (U+24D0 обведённая строчная латинская буква a) и 'ⅳ' (U+2173 строчная римская цифра четыре). Это связано с тем, что выбираются только символы со свойством GeneralCategory LowercaseLetter.
Более интуитивный предикат см. в isLowerCase.
isLowerCase :: Char -> Bool Источник
Выбирает символы Unicode, похожие на строчные буквы.
Примечание: этот предикат выбирает символы со свойством Unicode Lowercase, к которому относятся похожие на буквы символы, например: 'ⓐ' (U+24D0 обведённая строчная латинская буква a) и 'ⅳ' (U+2173 строчная римская цифра четыре).
Устаревший предикат см. в isLower.
Начиная с: base-4.18.0.0
isUpper :: Char -> Bool Источник
Выбирает прописные или титульные буквенные символы Unicode (буквы). Титульный регистр используется в небольшом числе буквенных лигатур, например в односимвольной форме Lj.
Примечание: этот предикат не работает для символов, похожих на буквы, например: 'Ⓐ' (U+24B6 обведённая прописная латинская буква A) и 'Ⅳ' (U+2163 римская цифра четыре). Это связано с тем, что выбираются только символы со свойством GeneralCategory UppercaseLetter или TitlecaseLetter.
Более интуитивный предикат см. в isUpperCase. Обратите внимание: в отличие от isUpperCase, isUpper действительно выбирает символы титульного регистра, например 'Dž' (U+01C5 прописная латинская d с маленькой z с гачеком) или 'ᾯ' (U+1FAF прописная греческая омега с густым придыханием, периcпомени и приписной йотой).
isUpperCase :: Char -> Bool Источник
Выбирает символы Unicode, похожие на прописные буквы.
Примечание: этот предикат выбирает символы со свойством Unicode Uppercase, к которому относятся похожие на буквы символы, например: 'Ⓐ' (U+24B6 обведённая прописная латинская буква A) и 'Ⅳ' (U+2163 римская цифра четыре).
Устаревший предикат см. в isUpper. Обратите внимание: в отличие от isUpperCase, isUpper действительно выбирает символы титульного регистра, например 'Dž' (U+01C5 прописная латинская d с маленькой z с гачеком) или 'ᾯ' (U+1FAF прописная греческая омега с густым придыханием, периспомени и приписной йотой).
Начиная с: base-4.18.0.0
isAlpha :: Char -> Bool Источник
Выбирает буквенные символы Unicode (строчные, прописные и титульные буквы, а также буквы письменностей без регистра и модифицирующие буквы). Эта функция эквивалентна isLetter.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «буквой».
isAlphaNum :: Char -> Bool Источник
Выбирает буквенные или числовые символы Unicode.
Обратите внимание: эта функция выбирает числовые цифры за пределами диапазона ASCII, а также числовые символы, не являющиеся цифрами; isDigit их не выбирает. Такие символы могут входить в идентификаторы, но не используются функциями вывода и чтения для представления чисел, например римские цифры, такие как V, и полноширинные цифры, такие как '1' (также известные как '65297').
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
UppercaseLetterLowercaseLetterTitlecaseLetterModifierLetterOtherLetterDecimalNumberLetterNumberOtherNumber
isPrint :: Char -> Bool Источник
Выбирает печатаемые символы Unicode (буквы, цифры, знаки, знаки препинания, символы и пробелы).
Эта функция возвращает False, если аргумент имеет один из следующих GeneralCategory, и True в противном случае:
isDigit :: Char -> Bool Источник
Выбирает цифры ASCII, то есть '0'..'9'.
isOctDigit :: Char -> Bool Источник
Выбирает восьмеричные цифры ASCII, то есть '0'..'7'.
isHexDigit :: Char -> Bool Источник
Выбирает шестнадцатеричные цифры ASCII, то есть '0'..'9', 'a'..'f', 'A'..'F'.
isLetter :: Char -> Bool Источник
Выбирает буквенные символы Unicode (строчные, прописные и титульные буквы, а также буквы письменностей без регистра и модифицирующие буквы). Эта функция эквивалентна isAlpha.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «буквой».
Примеры
Пример простого использования:
>>> isLetter 'a' True >>> isLetter 'A' True >>> isLetter 'λ' True >>> isLetter '0' False >>> isLetter '%' False >>> isLetter '♥' False >>> isLetter '\31' False
Убедитесь, что isLetter и isAlpha эквивалентны.
>>> let chars = [(chr 0)..] >>> let letters = map isLetter chars >>> let alphas = map isAlpha chars >>> letters == alphas True
isMark :: Char -> Bool Источник
Выбирает символы Unicode, являющиеся знаками, например диакритические знаки и подобные символы, которые сочетаются с предшествующими символами.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «знаком».
Примеры
Пример простого использования:
>>> isMark 'a' False >>> isMark '0' False
Комбинирующие знаки, например символы ударения, обычно должны следовать за другим символом, прежде чем станут печатаемыми:
>>> map isMark "ò" [False,True]
Каламбуры могут не поддерживаться:
>>> isMark '✓' False
isNumber :: Char -> Bool Источник
Выбирает числовые символы Unicode, включая цифры различных письменностей, римские цифры и так далее.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «числом».
Примеры
Пример простого использования:
>>> isNumber 'a' False >>> isNumber '%' False >>> isNumber '3' True
Символы ASCII от '0' до '9' являются числами:
>>> and $ map isNumber ['0'..'9'] True
Римские цифры Unicode также являются «числами»:
>>> isNumber 'Ⅸ' True
isPunctuation :: Char -> Bool Источник
Выбирает знаки препинания Unicode, включая различные виды соединителей, скобок и кавычек.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
ConnectorPunctuationDashPunctuationOpenPunctuationClosePunctuationInitialQuoteFinalQuoteOtherPunctuation
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «знаком препинания».
Примеры
Пример простого использования:
>>> isPunctuation 'a' False >>> isPunctuation '7' False >>> isPunctuation '♥' False >>> isPunctuation '"' True >>> isPunctuation '?' True >>> isPunctuation '—' True
isSymbol :: Char -> Bool Источник
Выбирает символы Unicode, включая математические символы и символы валют.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «символом».
Примеры
Пример простого использования:
>>> isSymbol 'a' False >>> isSymbol '6' False >>> isSymbol '=' True
Определение «математического символа» может показаться немного неожиданным в зависимости от вашего опыта:
>>> isSymbol '+' True >>> isSymbol '-' False
isSeparator :: Char -> Bool Источник
Выбирает пробельные символы и разделители Unicode.
Эта функция возвращает True, если аргумент имеет один из следующих GeneralCategory, и False в противном случае:
Эти классы определены в Базе данных символов Unicode, входящей в стандарт Unicode. В этом же документе определяется, что является и не является «разделителем».
Примеры
Пример простого использования:
>>> isSeparator 'a' False >>> isSeparator '6' False >>> isSeparator ' ' True
Предупреждение: символы новой строки и табуляции не считаются разделителями.
>>> isSeparator '\n' False >>> isSeparator '\t' False
Однако некоторые более экзотические символы считаются разделителями (например, в HTML):
>>> isSeparator '\160' True
Поддиапазоны
isAscii :: Char -> Bool Источник
Выбирает первые 128 символов набора символов Unicode, соответствующие набору символов ASCII.
isLatin1 :: Char -> Bool Источник
Выбирает первые 256 символов набора символов Unicode, соответствующие набору символов ISO 8859-1 (Latin-1).
isAsciiUpper :: Char -> Bool Источник
Выбирает заглавные буквы ASCII, то есть символы, удовлетворяющие обоим условиям isAscii и isUpper.
isAsciiLower :: Char -> Bool Source
Выбирает строчные буквы ASCII, то есть символы, удовлетворяющие обоим условиям isAscii и isLower.
Общие категории Unicode
data GeneralCategory Source
Общие категории Unicode (столбец 2 таблицы UnicodeData), перечисленные в том же порядке, что и в стандарте Unicode (в частности, в базе данных символов Unicode).
Примеры
Базовое использование:
>>> :t OtherLetter OtherLetter :: GeneralCategory
Eq экземпляр:
>>> UppercaseLetter == UppercaseLetter True >>> UppercaseLetter == LowercaseLetter False
Ord экземпляр:
>>> NonSpacingMark <= MathSymbol True
Enum экземпляр:
>>> enumFromTo ModifierLetter SpacingCombiningMark [ModifierLetter,OtherLetter,NonSpacingMark,SpacingCombiningMark]
Read экземпляр:
>>> read "DashPunctuation" :: GeneralCategory DashPunctuation >>> read "17" :: GeneralCategory *** Exception: Prelude.read: no parse
Show экземпляр:
>>> show EnclosingMark "EnclosingMark"
Bounded экземпляр:
>>> minBound :: GeneralCategory UppercaseLetter >>> maxBound :: GeneralCategory NotAssigned
Ix экземпляр:
>>> import GHC.Internal.Data.Ix ( index ) >>> index (OtherLetter,Control) FinalQuote 12 >>> index (OtherLetter,Control) Format *** Exception: Error in array index
Конструкторы
| UppercaseLetter | Lu: Буква, заглавная |
| LowercaseLetter | Ll: Буква, строчная |
| TitlecaseLetter | Lt: Буква, с заглавной формой |
| ModifierLetter | Lm: Буква-модификатор |
| OtherLetter | Lo: Другая буква |
| NonSpacingMark | Mn: Ненаправляющий знак |
| SpacingCombiningMark | Mc: Интервальный комбинируемый знак |
| EnclosingMark | Me: Обрамляющий знак |
| DecimalNumber | Nd: Десятичное число |
| LetterNumber | Nl: Буквенное число |
| OtherNumber | No: Другое число |
| ConnectorPunctuation | Pc: Пунктуация, соединительный знак |
| DashPunctuation | Pd: Пунктуация, тире |
| OpenPunctuation | Ps: Пунктуация, открывающий знак |
| ClosePunctuation | Pe: Пунктуация, закрывающий знак |
| InitialQuote | Pi: Пунктуация, открывающая кавычка |
| FinalQuote | Pf: Пунктуация, закрывающая кавычка |
| OtherPunctuation | Po: Другая пунктуация |
| MathSymbol | Sm: Математический символ |
| CurrencySymbol | Sc: Денежный символ |
| ModifierSymbol | Sk: Символ-модификатор |
| OtherSymbol | So: Другой символ |
| Space | Zs: Разделитель, пробел |
| LineSeparator | Zl: Разделитель, строки |
| ParagraphSeparator | Zp: Разделитель, абзаца |
| Control | Cc: Другой, управляющий символ |
| Format | Cf: Другой, форматирующий символ |
| Surrogate | Cs: Другой, суррогат |
| PrivateUse | Co: Другой, для частного использования |
| NotAssigned | Cn: Другой, не назначенный |
Экземпляры
| Eq GeneralCategory Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Unicode Методы(==) :: GeneralCategory -> GeneralCategory -> Bool Исходный код (/=) :: GeneralCategory -> GeneralCategory -> Bool Исходный код | |||||
| Ord GeneralCategory Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Unicode Методыcompare :: GeneralCategory -> GeneralCategory -> Ordering Исходный код (<) :: GeneralCategory -> GeneralCategory -> Bool Исходный код (<=) :: GeneralCategory -> GeneralCategory -> Bool Исходный код (>) :: GeneralCategory -> GeneralCategory -> Bool Исходный код (>=) :: GeneralCategory -> GeneralCategory -> Bool Исходный код max :: GeneralCategory -> GeneralCategory -> GeneralCategory Исходный код min :: GeneralCategory -> GeneralCategory -> GeneralCategory Исходный код | |||||
| Bounded GeneralCategory Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Unicode | |||||
| Enum GeneralCategory Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Unicode Методыsucc :: GeneralCategory -> GeneralCategory Исходный код pred :: GeneralCategory -> GeneralCategory Исходный код toEnum :: Int -> GeneralCategory Исходный код fromEnum :: GeneralCategory -> Int Исходный код enumFrom :: GeneralCategory -> [GeneralCategory] Исходный код enumFromThen :: GeneralCategory -> GeneralCategory -> [GeneralCategory] Исходный код enumFromTo :: GeneralCategory -> GeneralCategory -> [GeneralCategory] Исходный код enumFromThenTo :: GeneralCategory -> GeneralCategory -> GeneralCategory -> [GeneralCategory] Исходный код | |||||
| Generic GeneralCategory Исходный код | |||||
Определено в GHC.Internal.Generics Связанные типы
Методыfrom :: GeneralCategory -> Rep GeneralCategory x Исходный код to :: Rep GeneralCategory x -> GeneralCategory Исходный код | |||||
| Ix GeneralCategory Исходный код | Начиная с: base-2.1 |
||||
Определён в GHC.Internal.Unicode Методыrange :: (GeneralCategory, GeneralCategory) -> [GeneralCategory] Исходный код index :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Int Исходный код unsafeIndex :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Int Исходный код inRange :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Bool Исходный код rangeSize :: (GeneralCategory, GeneralCategory) -> Int Исходный код unsafeRangeSize :: (GeneralCategory, GeneralCategory) -> Int Исходный код | |
| Read GeneralCategory Исходный код | С версии: base-2.1 |
Определён в GHC.Internal.Read | |
| Show GeneralCategory Исходный код | С версии: base-2.1 |
Определён в GHC.Internal.Unicode МетодыshowsPrec :: Int -> GeneralCategory -> ShowS Исходный код show :: GeneralCategory -> String Исходный код showList :: [GeneralCategory] -> ShowS Исходный код | |
| type Rep GeneralCategory Исходный код | С версии: base-4.15.0.0 |
Определён в GHC.Internal.Generics type Rep GeneralCategory = D1 ('MetaData "GeneralCategory" "GHC.Internal.Unicode" "ghc-internal" 'False) ((((C1 ('MetaCons "UppercaseLetter" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LowercaseLetter" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TitlecaseLetter" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ModifierLetter" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherLetter" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NonSpacingMark" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SpacingCombiningMark" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "EnclosingMark" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DecimalNumber" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LetterNumber" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherNumber" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ConnectorPunctuation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DashPunctuation" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OpenPunctuation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ClosePunctuation" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "InitialQuote" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FinalQuote" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherPunctuation" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MathSymbol" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CurrencySymbol" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ModifierSymbol" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherSymbol" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Space" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LineSeparator" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ParagraphSeparator" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Control" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Format" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Surrogate" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PrivateUse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NotAssigned" 'PrefixI 'False) (U1 :: Type -> Type)))))) | |
generalCategory :: Char -> GeneralCategory Исходный код
Общая категория символа Unicode. Она зависит от экземпляра Enum класса GeneralCategory, который должен сохранять тот же порядок, в котором категории представлены в стандарте Unicode.
Примеры
Пример использования:
>>> generalCategory 'a' LowercaseLetter >>> generalCategory 'A' UppercaseLetter >>> generalCategory '0' DecimalNumber >>> generalCategory '%' OtherPunctuation >>> generalCategory '♥' OtherSymbol >>> generalCategory '\31' Control >>> generalCategory ' ' Space
Изменение регистра
toUpper :: Char -> Char Исходный код
Преобразует букву в соответствующую заглавную букву, если таковая имеется. Любой другой символ возвращается без изменений.
toLower :: Char -> Char Исходный код
Преобразует букву в соответствующую строчную букву, если таковая имеется. Любой другой символ возвращается без изменений.
toTitle :: Char -> Char Исходный код
Преобразует букву в соответствующую букву в заголовочном или верхнем регистре, если таковая имеется. (Заголовочный регистр отличается от верхнего только для небольшого числа букв-лигатур.) Любой другой символ возвращается без изменений.
Отдельные цифровые символы
digitToInt :: Char -> Int Исходный код
Преобразует отдельный цифровой символ Char в соответствующее значение типа Int. Функция завершается с ошибкой, если аргумент не удовлетворяет условию isHexDigit, но распознаёт как прописные, так и строчные шестнадцатеричные цифры (то есть '0'..'9', 'a'..'f', 'A'..'F').
Примеры
Символы от '0' до '9' правильно преобразуются в 0..9:
>>> map digitToInt ['0'..'9'] [0,1,2,3,4,5,6,7,8,9]
Как прописные, так и строчные символы от 'A' до 'F' также преобразуются в 10..15.
>>> map digitToInt ['a'..'f'] [10,11,12,13,14,15] >>> map digitToInt ['A'..'F'] [10,11,12,13,14,15]
Любой другой символ вызывает исключение:
>>> digitToInt 'G' *** Exception: Char.digitToInt: not a digit 'G' >>> digitToInt '♥' *** Exception: Char.digitToInt: not a digit '\9829'
intToDigit :: Int -> Char Исходный код
Преобразует Int в диапазоне 0..15 в соответствующий отдельный цифровой символ Char. Для других входных данных функция завершается с ошибкой; она генерирует строчные шестнадцатеричные цифры.
Числовые представления
ord :: Char -> Int Исходный код
Метод fromEnum, ограниченный типом Char.
chr :: Int -> Char Исходный код
Метод toEnum, ограниченный типом Char.
Строковые представления
showLitChar :: Char -> ShowS Исходный код
Преобразует символ в строку, используя только печатные символы и соглашения Haskell об экранировании в исходном коде. Например:
showLitChar '\n' s = "\\n" ++ s
lexLitChar :: ReadS String Исходный код
Читает строковое представление символа, используя соглашения Haskell об экранировании в исходном коде. Например:
lexLitChar "\\nHello" = [("\\n", "Hello")]
readLitChar :: ReadS Char Исходный код
Читает строковое представление символа, используя соглашения Haskell об экранировании в исходном коде, и преобразует его в закодированный символ. Например:
readLitChar "\\nHello" = [('\n', "Hello")]
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/Data-Char.html