Spec-Zone.ru › Haskell 9

Data.Char

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка libraries@haskell.org
Устойчивость стабильная
Переносимость переносимая
Safe Haskell Надежная
Язык Haskell2010

Содержание

  • Классификация символов
    • Поддиапазоны
    • Общие категории Unicode
  • Преобразование регистра
  • Символы-цифры
  • Числовые представления
  • Представления строк

Описание

Тип 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' удаление

Data.Char предоставляет утилиты для работы с символами.

Экземпляры
Подробности экземпляров
IsChar Char Источник

С версии: base-2.1

Подробности экземпляра

Определено в Text.Printf

Методы

toChar :: Char -> Char Источник

fromChar :: Char -> Char Источник

PrintfArg Char Источник

С версии: base-2.1

Подробности экземпляра

Определено в Text.Printf

Методы

formatArg :: Char -> FieldFormatter Источник

parseFormat :: Char -> ModifierParser Источник

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

Подробности экземпляра

Определено в GHC.Internal.Enum

Методы

minBound :: Char Источник

maxBound :: Char Источник

Enum Char Источник

С версии: base-2.1

Подробные сведения об экземпляре

Определено в GHC.Internal.Enum

Методы

succ :: Символ -> Символ Исходный код

pred :: Символ -> Символ Исходный код

toEnum :: Целое -> Символ Исходный код

fromEnum :: Символ -> Целое Исходный код

enumFrom :: Символ -> [Символ] Исходный код

enumFromThen :: Символ -> Символ -> [Символ] Исходный код

enumFromTo :: Символ -> Символ -> [Символ] Исходный код

enumFromThenTo :: Символ -> Символ -> Символ -> [Символ] Исходный код

Storable Символ Исходный код

С момента: base-2.1

Подробные сведения об экземпляре

Определено в GHC.Internal.Foreign.Storable

Методы

sizeOf :: Символ -> Целое Исходный код

alignment :: Символ -> Целое Исходный код

peekElemOff :: Указатель Символ -> Целое -> IO Символ Исходный код

pokeElemOff :: Указатель Символ -> Целое -> Символ -> IO () Исходный код

peekByteOff :: Указатель b -> Целое -> IO Символ Исходный код

pokeByteOff :: Указатель b -> Целое -> Символ -> IO () Исходный код

peek :: Указатель Символ -> IO Символ Исходный код

poke :: Указатель Символ -> Символ -> IO () Исходный код

Ix Символ Исходный код

С момента: base-2.1

Подробные сведения об экземпляре

Определено в GHC.Internal.Ix

Методы

range :: (Символ, Символ) -> [Символ] Исходный код

index :: (Символ, Символ) -> Символ -> Целое Исходный код

unsafeIndex :: (Символ, Символ) -> Символ -> Целое Исходный код

inRange :: (Символ, Символ) -> Символ -> Булево Исходный код

rangeSize :: (Символ, Символ) -> Целое Исходный код

unsafeRangeSize :: (Символ, Символ) -> Целое Исходный код

Read Символ Исходный код

С момента: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Read

Методы

readsPrec :: Int -> ReadS Символ Исходный код

readList :: ReadS [Символ] Исходный код

readPrec :: ReadPrec Символ Исходный код

readListPrec :: ReadPrec [Символ] Исходный код

Show Символ Исходный код

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Show

Методы

showsPrec :: Int -> Символ -> ShowS Исходный код

show :: Символ -> Строка Исходный код

showList :: [Символ] -> ShowS Исходный код

Eq Символ Исходный код
Подробности экземпляра

Определено в GHC.Classes

Методы

(==) :: Символ -> Символ -> Bool Исходный код

(/=) :: Символ -> Символ -> Bool Исходный код

Ord Символ Исходный код
Подробности экземпляра

Определено в GHC.Classes

Методы

compare :: Символ -> Символ -> Ordering Исходный код

(<) :: Символ -> Символ -> Bool Исходный код

(<=) :: Символ -> Символ -> Bool Исходный код

(>) :: Символ -> Символ -> Bool Исходный код

(>=) :: Символ -> Символ -> Bool Исходный код

max :: Символ -> Символ -> Символ Исходный код

min :: Символ -> Символ -> Символ Исходный код

TestCoercion SChar Исходный код

С версии: base-4.18.0.0

Подробности экземпляра

Определено в GHC.Internal.TypeLits

Методы

testCoercion :: forall (a :: Символ) (b :: Символ). SChar a -> SChar b -> Может быть (Coercion a b) Исходный код

TestEquality SChar Исходный код

С версии: base-4.18.0.0

Подробности экземпляра

Определено в GHC.Internal.TypeLits

Методы

testEquality :: forall (a :: Символ) (b :: Символ). SChar a -> SChar b -> Может быть (a :~: b) Исходный код

Lift Символ Исходный код
Подробности экземпляра

Определено в GHC.Internal.TH.Lift

Методы

lift :: Quote m => Символ -> m Exp Исходный код

liftTyped :: forall (m :: Тип -> Тип). Quote m => Символ -> Код m Символ Исходный код

Generic1 (URec Символ :: k -> Тип) Исходный код
Подробности экземпляра

Определено в GHC.Internal.Generics

Связанные типы

type Rep1 (URec Символ :: k -> Тип)

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

type Rep1 (URec Символ :: k -> Тип) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UChar" 'PrefixI 'True) (S1 ('MetaSel ('Just "uChar#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UChar :: k -> Тип)))

Методы

from1 :: forall (a :: k). URec Символ a -> Rep1 (URec Символ :: k -> Тип) a Исходный код

to1 :: forall (a :: k). Rep1 (URec Символ :: k -> Тип) a -> URec Символ a Исходный код

Eq1 (UChar :: Тип -> Тип) Исходный код

С момента: base-4.21.0.0

Подробности экземпляра

Определено в Data.Functor.Classes

Методы

liftEq :: (a -> b -> Булево) -> UChar a -> UChar b -> Булево Исходный код

Ord1 (UChar :: Тип -> Тип) Исходный код

С момента: base-4.21.0.0

Подробности экземпляра

Определено в Data.Functor.Classes

Методы

liftCompare :: (a -> b -> Порядок) -> UChar a -> UChar b -> Порядок Исходный код

Show1 (UChar :: Тип -> Тип) Исходный код

С момента: base-4.21.0.0

Подробности экземпляра

Определено в Data.Functor.Classes

Методы

liftShowsPrec :: (Целое -> a -> ShowS) -> ([a] -> ShowS) -> Целое -> UChar a -> ShowS Исходный код

liftShowList :: (Целое -> a -> ShowS) -> ([a] -> ShowS) -> [UChar a] -> ShowS Исходный код

Foldable (UChar :: Тип -> Тип) Исходный код

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Data.Foldable

Методы

fold :: Моноид m => UChar m -> m Исходный код

foldMap :: Моноид m => (a -> m) -> UChar a -> m Исходный код

foldMap' :: Моноид m => (a -> m) -> UChar a -> m Исходный код

foldr :: (a -> b -> b) -> b -> UChar a -> b Исходный код

foldr' :: (a -> b -> b) -> b -> UChar a -> b Исходный код

foldl :: (b -> a -> b) -> b -> UChar a -> b Исходный код

foldl' :: (b -> a -> b) -> b -> UChar a -> b Исходный код

foldr1 :: (a -> a -> a) -> UChar a -> a Исходный код

foldl1 :: (a -> a -> a) -> UChar a -> a Исходный код

toList :: UChar a -> [a] Исходный код

null :: UChar a -> Булево Исходный код

length :: UChar a -> Целое Исходный код

elem :: Eq a => a -> UChar a -> Булево Исходный код

maximum :: Ord a => UChar a -> a Исходный код

minimum :: Ord a => UChar a -> a Исходный код

sum :: Num a => UChar a -> a Исходный код

product :: Num a => UChar a -> a Исходный код

Перечисляемый (UChar :: Тип -> Тип) Исходный код

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Data.Traversable

Методы

traverse :: Применимый f => (a -> f b) -> UChar a -> f (UChar b) Исходный код

sequenceA :: Применимый f => UChar (f a) -> f (UChar a) Исходный код

mapM :: Моноид m => (a -> m b) -> UChar a -> m (UChar b) Исходный код

sequence :: Моноид m => UChar (m a) -> m (UChar a) Исходный код

Функтор (URec Символ :: Тип -> Тип) Исходный код

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec Символ a -> URec Символ b Исходный код

(<$) :: a -> URec Символ b -> URec Символ a Исходный код

Обобщенный (URec Символ p) Исходный код
Подробности экземпляра

Определено в GHC.Internal.Generics

Связанные типы

type Rep (URec Символ p)

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

type Rep (URec Символ p) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UChar" 'PrefixI 'True) (S1 ('MetaSel ('Just "uChar#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UChar :: Type -> Type)))

Методы

from :: URec Символ p -> Rep (URec Символ p) x Источник

to :: Rep (URec Символ p) x -> URec Символ p Источник

Show (URec Символ p) Источник

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

showsPrec :: Int -> URec Символ p -> ShowS Источник

show :: URec Символ p -> Строка Источник

showList :: [URec Символ p] -> ShowS Источник

Eq (URec Символ p) Источник

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

(==) :: URec Символ p -> URec Символ p -> Bool Источник

(/=) :: URec Символ p -> URec Символ p -> Bool Источник

Ord (URec Символ p) Источник

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

compare :: URec Символ p -> URec Символ p -> Ordering Источник

(<) :: URec Символ p -> URec Символ p -> Bool Источник

(<=) :: URec Символ p -> URec Символ p -> Bool Источник

(>) :: URec Символ p -> URec Символ p -> Bool Источник

(>=) :: URec Символ p -> URec Символ p -> Bool Источник

max :: URec Символ p -> URec Символ p -> URec Символ p Источник

min :: URec Символ p -> URec Символ p -> URec Символ p Источник

data URec Char (p :: k) Source

Используется для маркировки случаев Char#

С тех пор: base-4.9.0.0

Детали экземпляра

Определено в GHC.Internal.Generics

data URec Char (p :: k) = UChar {
  • uChar# :: Char#
}
type Compare (a :: Char) (b :: Char) Source
Детали экземпляра

Определено в GHC.Internal.Data.Type.Ord

type Compare (a :: Char) (b :: Char) = CmpChar a b
type Rep1 (URec Char :: k -> Type) Source

С тех пор: base-4.9.0.0

Детали экземпляра

Определено в GHC.Internal.Generics

type Rep1 (URec Char :: k -> Type) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UChar" 'PrefixI 'True) (S1 ('MetaSel ('Just "uChar#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UChar :: k -> Type)))
type Rep (URec Char p) Source

С тех пор: base-4.9.0.0

Детали экземпляра

Определено в GHC.Internal.Generics

type Rep (URec Char p) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UChar" 'PrefixI 'True) (S1 ('MetaSel ('Just "uChar#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UChar :: Type -> Type)))

Классификация символов

Символы Unicode делятся на буквы, цифры, знаки, знаки препинания, символы, разделители (включая пробелы) и другие (включая управляющие символы).

isControl :: Char -> Bool Source

Выбирает управляющие символы, которые являются непечатаемыми символами подмножества Latin-1 Unicode.

isSpace :: Char -> Bool Source

Возвращает True для любого символа пробела Unicode и управляющих символов \t, \n, \r, \f, \v.

isLower :: Char -> Bool Source

Выбирает строчные буквенные символы Unicode (буквы).

Примечание: этот предикат не работает для символов, похожих на буквы, таких как: 'ⓐ' (U+24D0 округлённая строчная буква латинского a) и 'ⅳ' (U+2173 маленькая римская цифра четыре). Это связано с выбором только символов с GeneralCategory LowercaseLetter.

См. isLowerCase для более интуитивного предиката.

isLowerCase :: Char -> Bool Source

Выбирает строчные символы Unicode, похожие на буквы.

Примечание: этот предикат выбирает символы с свойством Unicode Lowercase, которые включают символы, похожие на буквы, такие как: 'ⓐ' (U+24D0 округлённая строчная буква латинского a) и 'ⅳ' (U+2173 маленькая римская цифра четыре).

См. isLower для устаревшего предиката.

С тех пор: base-4.18.0.0

isUpper :: Char -> Bool Source

Выбирает прописные или строчные буквенные символы Unicode (буквы). Строчный регистр используется небольшим количеством лигатур букв, таких как односимвольные формы Lj.

Примечание: этот предикат не работает для символов, похожих на буквы, таких как: 'Ⓐ' (U+24B6 округлённая заглавная буква латинского A) и 'Ⅳ' (U+2163 римская цифра четыре). Это связано с выбором только символов с GeneralCategory UppercaseLetter или TitlecaseLetter.

См. isUpperCase для более интуитивного предиката. Обратите внимание, что в отличие от isUpperCase, isUpper выбирает строчные символы, такие как 'Dž' (U+01C5 латинская заглавная буква d с маленькой буквой z с галочкой) или 'ᾯ' (U+1FAF греческая заглавная буква омега с дазией и периспомене и просгеграмменеи).

isUpperCase :: Char -> Bool Source

Выбирает заглавные символы 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 Source

Выбирает буквенные символы Юникода (строчные, прописные и заглавные, а также буквы без учета регистра и модификаторы букв). Эта функция эквивалентна isLetter.

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • UppercaseLetter
  • LowercaseLetter
  • TitlecaseLetter
  • ModifierLetter
  • OtherLetter

Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определяется, что является и не является "Буквой".

isAlphaNum :: Char -> Bool Source

Выбирает буквенные или числовые символы Юникода.

Обратите внимание, что числовые цифры вне диапазона ASCII, а также числовые символы, которые не являются цифрами, выбираются этой функцией, но не isDigit. Такие символы могут быть частью идентификаторов, но не используются принтером и читателем для представления чисел, например, римские цифры, как V, полные цифры, как '1' (также известные как '65297').

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • UppercaseLetter
  • LowercaseLetter
  • TitlecaseLetter
  • ModifierLetter
  • OtherLetter
  • DecimalNumber
  • LetterNumber
  • OtherNumber

isPrint :: Char -> Bool Source

Выбирает печатные символы Юникода (буквы, цифры, знаки, знаки препинания, символы и пробелы).

Эта функция возвращает False если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае True:

  • LineSeparator
  • ParagraphSeparator
  • Control
  • Format
  • Surrogate
  • PrivateUse
  • NotAssigned

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

Выбирает буквенные символы Юникода (строчные, прописные и заглавные, а также буквы без учета регистра и модификаторы букв). Эта функция эквивалентна isAlpha.

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • UppercaseLetter
  • LowercaseLetter
  • TitlecaseLetter
  • ModifierLetter
  • OtherLetter

Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определяется, что является и не является "Буквой".

Примеры
Развернуть

Базовое использование:

>>> 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 Source

Выбирает символы-знаки Юникода, например, знаки диакритики и им подобные, которые объединяются с предшествующими символами.

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • NonSpacingMark
  • SpacingCombiningMark
  • EnclosingMark

Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определяется, что является и не является "Знаком".

Примеры
Развернуть

Базовое использование:

>>> isMark 'a'
False
>>> isMark '0'
False

Знаки диакритики, такие как знаки ударения, обычно должны следовать за другим символом, прежде чем стать печатными:

>>> map isMark "ò"
[False,True]

Игры слов не обязательно поддерживаются:

>>> isMark '✓'
False

isNumber :: Char -> Bool Source

Выбирает числовые символы Юникода, включая цифры из различных письменных систем, римские цифры и т.п.

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • DecimalNumber
  • LetterNumber
  • OtherNumber

Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определяется, что является и не является "Числом".

Примеры
Развернуть

Базовое использование:

>>> isNumber 'a'
False
>>> isNumber '%'
False
>>> isNumber '3'
True

ASCII '0' по '9' — все числа:

>>> and $ map isNumber ['0'..'9']
True

Римские цифры Юникода также являются "числами":

>>> isNumber 'Ⅸ'
True

isPunctuation :: Char -> Bool Source

Выбирает символы пунктуации Юникода, включая различные виды соединителей, скобок и кавычек.

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • ConnectorPunctuation
  • DashPunctuation
  • OpenPunctuation
  • ClosePunctuation
  • InitialQuote
  • FinalQuote
  • OtherPunctuation

Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определяется, что является и не является "Пунктуацией".

Примеры
Развернуть

Базовое использование:

>>> isPunctuation 'a'
False
>>> isPunctuation '7'
False
>>> isPunctuation '♥'
False
>>> isPunctuation '"'
True
>>> isPunctuation '?'
True
>>> isPunctuation '—'
True

isSymbol :: Char -> Bool Source

Выбирает символы-символы Юникода, включая математические и валютные символы.

Эта функция возвращает True если ее аргумент имеет один из следующих GeneralCategoryов, в противном случае False:

  • MathSymbol
  • CurrencySymbol
  • ModifierSymbol
  • OtherSymbol

Эти классы определены в Базе данных символов Юникода, которая является частью стандарта Юникода. В этом же документе определяется, что является и не является "Символом".

Примеры
Развернуть

Основное использование:

>>> isSymbol 'a'
False
>>> isSymbol '6'
False
>>> isSymbol '='
True

Определение «математического символа» может быть немного неинтуитивным в зависимости от опыта:

>>> isSymbol '+'
True
>>> isSymbol '-'
False

isSeparator :: Символ -> Булево Источник

Выбирает символы Unicode-пробелов и разделителей.

Эта функция возвращает True если её аргумент содержит один из следующих GeneralCategoryов, или False в противном случае:

  • Space
  • LineSeparator
  • ParagraphSeparator

Эти классы определены в Базе данных символов Unicode, которая является частью стандарта Unicode. В том же документе определено, что является, а что нет, «разделителем».

Примеры
Развернуть

Основное использование:

>>> isSeparator 'a'
False
>>> isSeparator '6'
False
>>> isSeparator ' '
True

Предупреждение: символы новой строки и табуляции не считаются разделителями.

>>> isSeparator '\n'
False
>>> isSeparator '\t'
False

Но некоторые более экзотические символы являются (например, &nbsp; HTML):

>>> isSeparator '\160'
True

Поддиапазоны

isAscii :: Символ -> Булево Источник

Выбирает первые 128 символов набора символов Unicode, соответствующих набору символов ASCII.

isLatin1 :: Символ -> Булево Источник

Выбирает первые 256 символов набора символов Unicode, соответствующих набору символов ISO 8859-1 (Latin-1).

isAsciiUpper :: Символ -> Булево Источник

Выбирает прописные буквы ASCII, то есть символы, удовлетворяющие как isAscii, так и isUpper.

isAsciiLower :: Символ -> Булево Источник

Выбирает строчные буквы ASCII, то есть символы, удовлетворяющие как isAscii, так и isLower.

Общие категории Unicode

data GeneralCategory Источник

Общие категории 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: Другой, Не назначен

Примеры
Подробности примеров
Ограниченный Категория символов Исходный код

С версии: base-2.1

Подробности примера

Определено в GHC.Internal.Unicode

Методы

minBound :: Категория символов Исходный код

maxBound :: Категория символов Исходный код

Перечисление Категория символов Исходный код

С версии: base-2.1

Подробности примера

Определено в GHC.Internal.Unicode

Методы

succ :: Категория символов -> Категория символов Исходный код

pred :: Категория символов -> Категория символов Исходный код

toEnum :: Целое число -> Категория символов Исходный код

fromEnum :: Категория символов -> Целое число Исходный код

enumFrom :: Категория символов -> [Категория символов] Исходный код

enumFromThen :: Категория символов -> Категория символов -> [Категория символов] Исходный код

enumFromTo :: Категория символов -> Категория символов -> [Категория символов] Исходный код

enumFromThenTo :: Категория символов -> Категория символов -> Категория символов -> [Категория символов] Исходный код

Обобщённый Категория символов Исходный код
Подробности примера

Определено в GHC.Internal.Generics

Связанные типы

type Представление Категория символов

С версии: 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 :: Тип -> Тип) :+: C1 ('MetaCons "Разделитель строк" 'PrefixI 'False) (U1 :: Тип -> Тип)) :+: C1 ('MetaCons "Разделитель абзацев" 'PrefixI 'False) (U1 :: Тип -> Тип :+: C1 ('MetaCons "Управление" 'PrefixI 'False) (U1 :: Тип -> Тип))) :+: ((C1 ('MetaCons "Формат" 'PrefixI 'False) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "Заменитель" 'PrefixI 'False) (U1 :: Тип -> Тип)) :+: (C1 ('MetaCons "Частное использование" 'PrefixI 'False) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "Не назначено" 'PrefixI 'False) (U1 :: Тип -> Тип))))))

Методы

from :: Категория символов -> Представление Категория символов x Исходный код

to :: Представление Категория символов x -> Категория символов Исходный код

Ix Категория символов Исходный код

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Unicode

Методы

range :: (Категория символов, Категория символов) -> [Категория символов] Исходный код

index :: (Категория символов, Категория символов) -> Категория символов -> Целое Исходный код

unsafeIndex :: (Категория символов, Категория символов) -> Категория символов -> Целое Исходный код

inRange :: (Категория символов, Категория символов) -> Категория символов -> Булево Исходный код

rangeSize :: (Категория символов, Категория символов) -> Целое Исходный код

unsafeRangeSize :: (Категория символов, Категория символов) -> Целое Исходный код

Read Категория символов Исходный код

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Read

Методы

readsPrec :: Целое -> ReadS Категория символов Исходный код

readList :: ReadS [Категория символов] Исходный код

readPrec :: ReadPrec Категория символов Исходный код

readListPrec :: ReadPrec [Категория символов] Исходный код

Show Категория символов Исходный код

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Unicode

Методы

showsPrec :: Int -> GeneralCategory -> ShowS Исходный код

show :: GeneralCategory -> Строка Исходный код

showList :: [GeneralCategory] -> ShowS Исходный код

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 Исходный код

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 :: Тип -> Тип) :+: C1 ('MetaCons "Разделитель строк" 'PrefixI 'Ложь) (U1 :: Тип -> Тип)) :+: (C1 ('MetaCons "Разделитель абзацев" 'PrefixI 'Ложь) (U1 :: Тип -> Тип)) :+: C1 ('MetaCons "Управление" 'PrefixI 'Ложь) (U1 :: Тип -> Тип))) :+: ((C1 ('MetaCons "Формат" 'PrefixI 'Ложь) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "Замещение" 'PrefixI 'Ложь) (U1 :: Тип -> Тип)) :+: (C1 ('MetaCons "Частное использование" 'PrefixI 'Ложь) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "Не назначено" 'PrefixI 'Ложь) (U1 :: Тип -> Тип))))))

generalCategory :: Символ -> ОбщаяКатегория Исходный код

Общая категория символа Юникода. Это зависит от экземпляра Enum GeneralCategory, который должен оставаться в том же порядке, что и категории в стандарте Юникода.

Примеры
Развернуть

Базовое использование:

>>> 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/9.12.1/docs/libraries/base-4.21.0.0-8e62/Data-Char.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API