Data.Символ
| Copyright | (c) The University of Glasgow 2001 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | stable |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Содержание
Описание
Тип Char и связанные операции.
Тип символа Char представляет собой перечисление, значения которого представляют символы Unicode (или эквивалентно ISO/IEC 10646) (см. http://www.unicode.org/ для получения подробной информации). Это множество расширяет кодировку символов ISO 8859-1 (Latin-1) (первые 256 символов), которая сама по себе является расширением кодировки символов ASCII (первые 128 символов). Символьный литерал в Haskell имеет тип Char.
Для преобразования Char в соответствующее значение Int, определенное Unicode, или наоборот, используйте toEnum и fromEnum из класса Enum соответственно (или эквивалентно ord и chr).
Экземпляры
Классификация символов
Символы Unicode делятся на буквы, цифры, знаки, пунктуацию, символы, разделители (включая пробелы) и другие (включая управляющие символы).
isControl :: Char -> Bool Source
Выбирает управляющие символы, которые являются непечатаемыми символами подмножества Latin-1 Unicode.
isSpace :: Char -> Bool Source
Возвращает True для любого символа пробела Unicode и управляющих символов \t, \n, \r, \f, \v.
isLower :: Char -> Bool Source
Выбирает строчные буквенные символы Unicode (буквы).
isUpper :: Char -> Bool Source
Выбирает прописные или заглавные буквенные символы Unicode (буквы). Заглавный регистр используется небольшим числом буквенных лигатур, таких как односимвольная форма Lj.
isAlpha :: Char -> Bool Source
Выбирает буквенные символы Unicode (строчные, прописные и заглавные буквы, а также буквы бесчувствительных к регистру скриптов и модификаторы букв). Эта функция эквивалентна isLetter.
isAlphaNum :: Char -> Bool Source
Выбирает буквенные или числовые символы Unicode.
Обратите внимание, что числовые цифры за пределами диапазона ASCII выбираются этой функцией, но не isDigit. Такие цифры могут быть частью идентификаторов, но не используются принтером и ридером для представления чисел.
isPrint :: Char -> Bool Source
Выбирает печатаемые символы Unicode (буквы, цифры, знаки, пунктуацию, символы и пробелы).
isDigit :: Char -> Bool Source
Выбирает цифры ASCII, т. е. '0'..'9'.
isOctDigit :: Char -> Bool Source
Выбирает восьмеричные цифры ASCII, т. е. '0'..'7'.
isHexDigit :: Char -> Bool Source
Выбирает шестнадцатеричные цифры ASCII, т. е. '0'..'9', 'a'..'f', 'A'..'F'.
isLetter :: Char -> Bool Source
Выбирает буквенные символы Unicode (строчные, прописные и заглавные буквы, а также буквы бесчувствительных к регистру скриптов и модификаторы букв). Эта функция эквивалентна isAlpha.
Эта функция возвращает True если её аргумент имеет один из следующих GeneralCategorys, или False в противном случае:
Эти классы определены в Базе данных символов Unicode, которая является частью стандарта Unicode. В этом же документе определено, что является и не является «буквой».
Примеры
Базовое использование:
>>>isLetter 'a'True>>>isLetter 'A'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 == alphasTrue
Выбирает символы-знаки Unicode, например, акценты и тому подобное, которые сочетаются с предшествующими символами.
Эта функция возвращает True если её аргумент имеет один из следующих GeneralCategorys, или False в противном случае:
Эти классы определены в Базе данных символов Unicode, которая является частью стандарта Unicode. В этом же документе определено, что является и не является «знаком».
Примеры
Базовое использование:
>>>isMark 'a'False>>>isMark '0'False
Сочетающиеся знаки, такие как акцентные символы, обычно должны следовать за другим символом, прежде чем они станут печатаемыми:
>>>map isMark "ò"[False,True]
Каламбуры не обязательно поддерживаются:
>>>isMark '✓'False
isNumber :: Char -> Bool Source
Выбирает числовые символы Unicode, включая цифры из различных скриптов, римские цифры и т. д.
Эта функция возвращает True если её аргумент имеет один из следующих GeneralCategorys, или False в противном случае:
Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определено, что является, а что не является "Числом".
Примеры
Основное использование:
>>>isNumber 'a'False>>>isNumber '%'False>>>isNumber '3'True
ASCII '0' по '9' являются числами:
>>>and $ map isNumber ['0'..'9']True
Числами Юникода также являются римские цифры:
>>>isNumber 'Ⅸ'True
isPunctuation :: Char -> Bool Исходный код
Выбирает символы пунктуации Юникода, включая различные виды соединителей, скобок и кавычек.
Эта функция возвращает True если её аргумент имеет один из следующих GeneralCategorys, или False в противном случае:
ConnectorPunctuationDashPunctuationOpenPunctuationClosePunctuationInitialQuoteFinalQuoteOtherPunctuation
Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определено, что является, а что не является "Пунктуацией".
Примеры
Основное использование:
>>>isPunctuation 'a'False>>>isPunctuation '7'False>>>isPunctuation '♥'False>>>isPunctuation '"'True>>>isPunctuation '?'True>>>isPunctuation '—'True
isSymbol :: Char -> Bool Исходный код
Выбирает символы Юникода, включая математические и валютные символы.
Эта функция возвращает True если её аргумент имеет один из следующих GeneralCategorys, или False в противном случае:
Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определено, что является, а что не является "Символом".
Примеры
Основное использование:
>>>isSymbol 'a'False>>>isSymbol '6'False>>>isSymbol '='True
Определение "математического символа" может быть несколько не интуитивно понятным в зависимости от вашего опыта:
>>>isSymbol '+'True>>>isSymbol '-'False
isSeparator :: Char -> Bool Исходный код
Выбирает символы пробелов и разделителей Юникода.
Эта функция возвращает True если её аргумент имеет один из следующих GeneralCategorys, или False в противном случае:
Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определено, что является, а что не является "Разделителем".
Примеры
Основное использование:
>>>isSeparator 'a'False>>>isSeparator '6'False>>>isSeparator ' 'True
Предупреждение: символы новой строки и табуляции не считаются разделителями.
>>>isSeparator '\n'False>>>isSeparator '\t'False
Но некоторые более экзотические символы являются (например, HTML):
>>>isSeparator '\160'True
Поддиапазоны
isAscii :: Char -> Bool Исходный код
Выбирает первые 128 символов набора символов Юникода, соответствующие набору символов ASCII.
isLatin1 :: Char -> Bool Исходный код
Выбирает первые 256 символов набора символов Юникода, соответствующие набору символов ISO 8859-1 (Latin-1).
isAsciiUpper :: Char -> Bool Исходный код
Выбирает заглавные буквы ASCII, т.е. символы, удовлетворяющие как isAscii , так и isUpper.
isAsciiLower :: Char -> Bool Исходный код
Выбирает строчные буквы ASCII, т.е. символы, удовлетворяющие как isAscii , так и isLower.
Общие категории Юникода
data GeneralCategory Исходный код
Общие категории Юникода (колонка 2 таблицы UnicodeData) в порядке их перечисления в стандарте Юникода (в частности, в базе данных символов Юникода).
Примеры
Основное использование:
>>>:t OtherLetterOtherLetter :: GeneralCategory
Eq пример:
>>>UppercaseLetter == UppercaseLetterTrue>>>UppercaseLetter == LowercaseLetterFalse
Ord пример:
>>>NonSpacingMark <= MathSymbolTrue
Enum пример:
>>>enumFromTo ModifierLetter SpacingCombiningMark[ModifierLetter,OtherLetter,NonSpacingMark,SpacingCombiningMark]
Read пример:
>>>read "DashPunctuation" :: GeneralCategoryDashPunctuation>>>read "17" :: GeneralCategory*** Exception: Prelude.read: no parse
Show пример:
>>>show EnclosingMark"EnclosingMark"
Bounded пример:
>>>minBound :: GeneralCategoryUppercaseLetter>>>maxBound :: GeneralCategoryNotAssigned
Ix пример:
>>>import Data.Ix ( index )>>>index (OtherLetter,Control) FinalQuote12>>>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: Не назначенный символ |
Примеры реализации
generalCategory :: Символ -> GeneralCategory Исходный код
Общепринятая категория Unicode символа. Это зависит от Enum реализации GeneralCategory, порядок которой должен соответствовать порядку категорий в стандарте Unicode.
Примеры
Базовое использование:
>>>generalCategory 'a'LowercaseLetter>>>generalCategory 'A'UppercaseLetter>>>generalCategory '0'DecimalNumber>>>generalCategory '%'OtherPunctuation>>>generalCategory '♥'OtherSymbol>>>generalCategory '\31'Control>>>generalCategory ' 'Space
Преобразование регистра
toUpper :: Символ -> Символ Исходный код
Преобразует букву в соответствующую заглавную букву, если такая существует. Любой другой символ возвращается без изменений.
toLower :: Символ -> Символ Исходный код
Преобразует букву в соответствующую строчную букву, если такая существует. Любой другой символ возвращается без изменений.
toTitle :: Символ -> Символ Исходный код
Преобразует букву в соответствующую заглавную букву (или букву заглавного регистра), если такая существует. Заглавный регистр отличается от верхнего регистра только для небольшого числа лигатурных букв. Любой другой символ возвращается без изменений.
Символы-цифры
digitToInt :: Символ -> Целое Исходный код
Преобразует одиночную цифру Char в соответствующее целое число. Эта функция завершается неудачей, если ее аргумент не соответствует 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 :: Целое -> Символ Исходный код
Преобразует целое число в диапазоне 0..15 в соответствующий одиночный символ-цифру. Эта функция завершается неудачей для других входных данных и генерирует строчные шестнадцатеричные цифры.
Числовые представления
ord :: Символ -> Целое Исходный код
Метод fromEnum ограничен типом Char.
chr :: Целое -> Символ Исходный код
Метод toEnum ограничен типом Char.
Представления строк
showLitChar :: Символ -> ShowS Исходный код
Преобразует символ в строку, используя только печатаемые символы и соглашения об экранировании языка Haskell. Например:
showLitChar '\n' s = "\\n" ++ s
lexLitChar :: ReadS Строка Исходный код
Чтение строкового представления символа, используя соглашения об экранировании языка Haskell. Например:
lexLitChar "\\nHello" = [("\\n", "Hello")]
readLitChar :: ReadS Символ Исходный код
Чтение строкового представления символа, используя соглашения об экранировании языка 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/7.10.3/docs/html/libraries/base-4.8.2.0/Data-Char.html