Spec-Zone.ru › Haskell 9

Data.Char

Авторские права (c) Университет Глазго, 2001
Лицензия В стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность стабильный
Переносимость переносимый
Безопасный 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 предоставляет средства для работы с 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 Источник

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

Определён в GHC.Internal.Classes

Методы

(==) :: Char -> Char -> Bool Источник

(/=) :: Char -> Char -> Bool Источник

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

Определён в GHC.Internal.Classes

Методы

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

(<) :: Char -> Char -> Bool Источник

(<=) :: Char -> Char -> Bool Источник

(>) :: Char -> Char -> Bool Источник

(>=) :: Char -> Char -> Bool Источник

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

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

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 :: Char -> Char Источник

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

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

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

enumFrom :: Char -> [Char] Источник

enumFromThen :: Char -> Char -> [Char] Источник

enumFromTo :: Char -> Char -> [Char] Источник

enumFromThenTo :: Char -> Char -> Char -> [Char] Источник

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 () Источник

peek :: Ptr Char -> IO Char Источник

poke :: Ptr Char -> Char -> IO () Источник

Ix Char Источник

Начиная с: base-2.1

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

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

Методы

range :: (Char, Char) -> [Char] Источник

index :: (Char, Char) -> Char -> Int Источник

unsafeIndex :: (Char, Char) -> Char -> Int Источник

inRange :: (Char, Char) -> Char -> Bool Источник

rangeSize :: (Char, Char) -> Int Источник

unsafeRangeSize :: (Char, Char) -> Int Источник

Read Char Источник

Начиная с: base-2.1

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

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

Методы

readsPrec :: Int -> ReadS Char Источник

readList :: ReadS [Char] Источник

readPrec :: ReadPrec Char Источник

readListPrec :: ReadPrec [Char] Источник

Show Char Источник

Начиная с: base-2.1

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

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

Методы

showsPrec :: Int -> Char -> ShowS Источник

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

showList :: [Char] -> ShowS Источник

TestCoercion SChar Источник

Начиная с: base-4.18.0.0

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

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

Методы

testCoercion :: forall (a :: Char) (b :: Char). SChar a -> SChar b -> Maybe (Coercion a b) Источник

TestEquality SChar Источник

Since: base-4.18.0.0

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

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

Методы

testEquality :: forall (a :: Char) (b :: Char). SChar a -> SChar b -> Maybe (a :~: b) Источник

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

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

Методы

lift :: Quote m => Char -> m Exp Источник

liftTyped :: forall (m :: Type -> Type). Quote m => Char -> Code m Char Источник

Generic1 (URec Char :: k -> Type) Источник
Подробности экземпляра

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

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

type Rep1 (URec Char :: k -> Type)

Since: 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)))

Методы

from1 :: forall (a :: k). URec Char a -> Rep1 (URec Char :: k -> Type) a Источник

to1 :: forall (a :: k). Rep1 (URec Char :: k -> Type) a -> URec Char a Источник

Eq1 (UChar :: Type -> Type) Источник

Since: base-4.21.0.0

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

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

Методы

liftEq :: (a -> b -> Bool) -> UChar a -> UChar b -> Bool Источник

Ord1 (UChar :: Type -> Type) Источник

Since: base-4.21.0.0

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

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

Методы

liftCompare :: (a -> b -> Ordering) -> UChar a -> UChar b -> Ordering Источник

Show1 (UChar :: Type -> Type) Источник

Since: base-4.21.0.0

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

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

Методы

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> UChar a -> ShowS Источник

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [UChar a] -> ShowS Источник

Foldable (UChar :: Type -> Type) Источник

Since: base-4.9.0.0

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

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

Методы

fold :: Monoid m => UChar m -> m Источник

foldMap :: Monoid m => (a -> m) -> UChar a -> m Источник

foldMap' :: Monoid 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 -> Bool Источник

length :: UChar a -> Int Источник

elem :: Eq a => a -> UChar a -> Bool Источник

maximum :: Ord a => UChar a -> a Источник

minimum :: Ord a => UChar a -> a Источник

sum :: Num a => UChar a -> a Источник

product :: Num a => UChar a -> a Источник

Traversable (UChar :: Type -> Type) Источник

Since: base-4.9.0.0

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

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

Методы

traverse :: Applicative f => (a -> f b) -> UChar a -> f (UChar b) Источник

sequenceA :: Applicative f => UChar (f a) -> f (UChar a) Источник

mapM :: Monad m => (a -> m b) -> UChar a -> m (UChar b) Источник

sequence :: Monad m => UChar (m a) -> m (UChar a) Источник

Functor (URec Char :: Type -> Type) Источник

Since: base-4.9.0.0

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

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

Методы

fmap :: (a -> b) -> URec Char a -> URec Char b Источник

(<$) :: a -> URec Char b -> URec Char a Источник

Eq (URec Char p) Источник

Since: base-4.9.0.0

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

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

Методы

(==) :: URec Char p -> URec Char p -> Bool Источник

(/=) :: URec Char p -> URec Char p -> Bool Источник

Ord (URec Char p) Источник

Since: base-4.9.0.0

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

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

Методы

compare :: URec Char p -> URec Char p -> Ordering Источник

(<) :: URec Char p -> URec Char p -> Bool Источник

(<=) :: URec Char p -> URec Char p -> Bool Источник

(>) :: URec Char p -> URec Char p -> Bool Источник

(>=) :: URec Char p -> URec Char p -> Bool Источник

max :: URec Char p -> URec Char p -> URec Char p Источник

min :: URec Char p -> URec Char p -> URec Char p Источник

Generic (URec Char p) Источник
Сведения об экземпляре

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

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

type Rep (URec Char p)

Начиная с: 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)))

Методы

from :: URec Char p -> Rep (URec Char p) x Источник

to :: Rep (URec Char p) x -> URec Char p Источник

Show (URec Char p) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

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

Методы

showsPrec :: Int -> URec Char p -> ShowS Источник

show :: URec Char p -> String Источник

showList :: [URec Char p] -> ShowS Источник

data URec Char (p :: k) Источник

Используется для обозначения вхождений Char#

Начиная с: base-4.9.0.0

Сведения об экземпляре

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

data URec Char (p :: k) = UChar {
  • uChar# :: Char#
}
type Compare (a :: Char) (b :: Char) Источник
Сведения об экземпляре

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

type Compare (a :: Char) (b :: Char) = CmpChar a b
type Rep1 (URec Char :: k -> Type) Источник

Начиная с: 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) Источник

Начиная с: 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 Источник

Выбирает управляющие символы — непечатаемые символы из подмножества 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 в противном случае:

  • UppercaseLetter
  • LowercaseLetter
  • TitlecaseLetter
  • ModifierLetter
  • OtherLetter

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

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

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

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

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

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

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

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

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

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

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 в противном случае:

  • UppercaseLetter
  • LowercaseLetter
  • TitlecaseLetter
  • ModifierLetter
  • OtherLetter

Эти классы определены в Базе данных символов 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 в противном случае:

  • NonSpacingMark
  • SpacingCombiningMark
  • EnclosingMark

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

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

Пример простого использования:

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

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

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

Каламбуры могут не поддерживаться:

>>> isMark '✓'
False

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

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

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

  • DecimalNumber
  • LetterNumber
  • OtherNumber

Эти классы определены в Базе данных символов 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 в противном случае:

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

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

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

Пример простого использования:

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

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

Выбирает символы Unicode, включая математические символы и символы валют.

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

  • MathSymbol
  • CurrencySymbol
  • ModifierSymbol
  • OtherSymbol

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

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

Пример простого использования:

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

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

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

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

Выбирает пробельные символы и разделители 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 :: 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

Методы

minBound :: GeneralCategory Исходный код

maxBound :: GeneralCategory Исходный код

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

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

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

Методы

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

Методы

readsPrec :: Int -> ReadS GeneralCategory Исходный код

readList :: ReadS [GeneralCategory] Исходный код

readPrec :: ReadPrec GeneralCategory Исходный код

readListPrec :: ReadPrec [GeneralCategory] Исходный код

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

Spec-Zone.ru

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