Text.Read
| Авторские права | (с) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD (см. файл libraries/base/LICENSE) |
| Поддержка | libraries@haskell.org |
| Устойчивость | предварительная |
| Переносимость | непереносимая (использует Text.ParserCombinators.ReadP) |
| Безопасный Haskell | Безопасный |
| Язык | Haskell2010 |
Содержание
Описание
Преобразование строк в значения.
Модуль Text.Read — это стандартное место для импорта возможностей класса Read. Только для GHC, он предлагает расширенный и значительно улучшенный класс Read, который представляет собой предлагаемую альтернативу классу Haskell 2010 Read. В частности, написание парсеров становится проще, а парсеры значительно эффективнее.
Класс Read
class Read a where Исходный код
Парсинг String объектов, производящих значения.
Производные экземпляры Read делают следующие предположения, которым подчиняются производные экземпляры Show:
- Если конструктор определен как инфиксный оператор, то производный экземпляр
Readбудет анализировать только инфиксные применения конструктора (а не префиксную форму). - Ассоциативность не используется для сокращения скобок, хотя приоритет может использоваться.
- Если конструктор определен с помощью синтаксиса записей, производный экземпляр
Readбудет анализировать только форму синтаксиса записей, и, более того, поля должны быть указаны в том же порядке, что и в исходном объявлении. - Производный экземпляр
Readпозволяет произвольные пробелы Haskell между токенами входной строки. Допускаются также дополнительные скобки.
Например, при объявлениях
infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a
производный экземпляр Read в Haskell 2010 эквивалентен
instance (Read a) => Read (Tree a) where
readsPrec d r = readParen (d > app_prec)
(\r -> [(Leaf m,t) |
("Leaf",s) <- lex r,
(m,t) <- readsPrec (app_prec+1) s]) r
++ readParen (d > up_prec)
(\r -> [(u:^:v,w) |
(u,s) <- readsPrec (up_prec+1) r,
(":^:",t) <- lex s,
(v,w) <- readsPrec (up_prec+1) t]) r
where app_prec = 10
up_prec = 5
Обратите внимание, что правая ассоциативность :^: не используется.
Производный экземпляр в GHC эквивалентен
instance (Read a) => Read (Tree a) where
readPrec = parens $ (prec app_prec $ do
Ident "Leaf" <- lexP
m <- step readPrec
return (Leaf m))
+++ (prec up_prec $ do
u <- step readPrec
Symbol ":^:" <- lexP
v <- step readPrec
return (u :^: v))
where app_prec = 10
up_prec = 5
readListPrec = readListPrecDefault
Почему существуют и readsPrec, и readPrec, и почему GHC выбирает реализацию readPrec в производных экземплярах Read вместо readsPrec? Причина в том, что readsPrec основана на типе ReadS, и хотя ReadS упоминается в Отчёте Haskell 2010, это не очень эффективный тип данных для парсеров.
readPrec, с другой стороны, основан на гораздо более эффективном типе данных ReadPrec (также известном как "парсеры нового стиля"), но его определение основано на использовании расширения языка RankNTypes. Поэтому readPrec (и его кузен readListPrec) помечены как специфичные для GHC. Тем не менее, рекомендуется использовать readPrec вместо readsPrec всякий раз, когда это возможно, из-за улучшений производительности.
Как упоминалось выше, производные экземпляры Read в GHC будут реализовывать readPrec вместо readsPrec. По умолчанию реализация readsPrec (и его кузен readList) будет просто использовать readPrec под капотом. Если вы пишете экземпляр Read вручную, рекомендуется написать его следующим образом:
instance Read T where readPrec = ... readListPrec = readListPrecDefault
Методы
Аргументы
| :: Int | приоритет оператора в окружающем контексте (число от |
| -> ReadS a |
пытается проанализировать значение из начала строки, возвращая список пар (разложенное значение, оставшаяся строка). Если парсинг не удался, возвращаемый список пуст.
Производные экземпляры Read и Show удовлетворяют следующим условиям:
То есть readsPrec анализирует строку, сгенерированную showsPrec, и возвращает значение, с которым начался showsPrec.
readList :: ReadS [a] Исходный код
Метод readList предоставляется, чтобы позволить программисту указать специализированный способ разбора списков значений. Например, он используется в предопределенном экземпляре Read типа Char, где ожидается, что значения типа String будут использовать двойные кавычки, а не квадратные скобки.
readPrec :: ReadPrec a Исходный код
Предлагаемая замена для readsPrec с использованием парсеров нового стиля (только GHC).
readListPrec :: ReadPrec [a] Исходный код
Предлагаемая замена для readList с использованием парсеров нового стиля (только GHC). По умолчанию используется readList. Экземпляры, которые определяют readPrec должны также определить readListPrec как readListPrecDefault.
Экземпляры
| Read Void Source |
Чтение значения С момента: base-4.8.0.0 |
| Read ByteOrder Source | С момента: base-4.11.0.0 |
| Read All Source | С момента: base-2.1 |
| Read Any Source | С момента: base-2.1 |
| Read Version Source | С момента: base-2.1 |
| Read CBool Source | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CBool Исходный код readList :: ReadS [CBool] Исходный код | |
| Read CChar Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CChar Исходный код readList :: ReadS [CChar] Исходный код | |
| Read CClock Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CClock Исходный код readList :: ReadS [CClock] Исходный код | |
| Read CDouble Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CDouble Исходный код readList :: ReadS [CDouble] Исходный код | |
| Read CFloat Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CFloat Исходный код readList :: ReadS [CFloat] Исходный код | |
| Read CInt Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CInt Исходный код readList :: ReadS [CInt] Исходный код | |
| Read CIntMax Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CIntMax Исходный код readList :: ReadS [CIntMax] Исходный код | |
| Read CIntPtr Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CIntPtr Исходный код readList :: ReadS [CIntPtr] Исходный код | |
| Read CLLong Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CLLong Исходный код readList :: ReadS [CLLong] Исходный код | |
| Read CLong Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CLong Исходный код readList :: ReadS [CLong] Исходный код | |
| Read CPtrdiff Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Целое число -> ReadS CPtrdiff Исходный код readList :: ReadS [CPtrdiff] Исходный код | |
| Read CSChar Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Целое число -> ReadS CSChar Исходный код readList :: ReadS [CSChar] Исходный код | |
| Read CSUSeconds Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Целое число -> ReadS CSUSeconds Исходный код readList :: ReadS [CSUSeconds] Исходный код | |
| Read CShort Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Целое число -> ReadS CShort Исходный код readList :: ReadS [CShort] Исходный код | |
| Read CSigAtomic Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Целое число -> ReadS CSigAtomic Исходный код readList :: ReadS [CSigAtomic] Исходный код | |
| Read CSize Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CSize Исходный код readList :: ReadS [CSize] Исходный код | |
| Read CTime Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CTime Исходный код readList :: ReadS [CTime] Исходный код | |
| Read CUChar Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CUChar Исходный код readList :: ReadS [CUChar] Исходный код | |
| Read CUInt Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CUInt Исходный код readList :: ReadS [CUInt] Исходный код | |
| Read CUIntMax Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CUIntMax Исходный код readList :: ReadS [CUIntMax] Исходный код | |
| Read CUIntPtr Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыreadsPrec :: Int -> ReadS CWchar Исходный код readList :: ReadS [CWchar] Исходный код | |
| Read IntPtr Исходный код | |
Определено в GHC.Internal.Foreign.Ptr МетодыreadsPrec :: Int -> ReadS IntPtr Исходный код readList :: ReadS [IntPtr] Исходный код | |
| Read WordPtr Исходный код | |
Определено в GHC.Internal.Foreign.Ptr МетодыreadsPrec :: Int -> ReadS WordPtr Исходный код readList :: ReadS [WordPtr] Исходный код | |
| Read Associativity Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Generics МетодыreadsPrec :: Int -> ReadS Associativity Исходный код readList :: ReadS [Associativity] Исходный код | |
| Read DecidedStrictness Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Generics | |
| Read Fixity Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Generics МетодыreadsPrec :: Int -> ReadS Fixity Исходный код readList :: ReadS [Fixity] Исходный код | |
| Read SourceStrictness Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Generics | |
| Read SourceUnpackedness Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Generics | |
| Read SeekMode Исходный код | С момента: base-4.2.0.0 |
Определено в GHC.Internal.IO.Device МетодыreadsPrec :: Int -> ReadS SeekMode Исходный код readList :: ReadS [SeekMode] Исходный код | |
| Read ExitCode Исходный код | |
Определено в GHC.Internal.IO.Exception МетодыreadsPrec :: Int -> ReadS ExitCode Исходный код readList :: ReadS [ExitCode] Исходный код | |
| Read BufferMode Исходный код | С момента: base-4.2.0.0 |
Определено в GHC.Internal.IO.Handle.Types МетодыreadsPrec :: Int -> ReadS BufferMode Исходный код readList :: ReadS [BufferMode] Исходный код | |
| Read Newline Исходный код | С момента: base-4.3.0.0 |
Определено в GHC.Internal.IO.Handle.Types МетодыreadsPrec :: Int -> ReadS Newline Исходный код readList :: ReadS [Newline] Исходный код | |
| Read NewlineMode Исходный код | С момента: base-4.3.0.0 |
Определено в GHC.Internal.IO.Handle.Types МетодыreadsPrec :: Int -> ReadS NewlineMode Исходный код readList :: ReadS [NewlineMode] Исходный код | |
| Read IOMode Исходный код | С момента: base-4.2.0.0 |
Определено в GHC.Internal.IO.IOMode МетодыreadsPrec :: Int -> ReadS IOMode Исходный код readList :: ReadS [IOMode] Исходный код | |
| Read Int16 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Int МетодыreadsPrec :: Int -> ReadS Int16 Исходный код readList :: ReadS [Int16] Исходный код | |
| Read Int32 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Int МетодыreadsPrec :: Int -> ReadS Int32 Исходный код readList :: ReadS [Int32] Исходный код | |
| Read Int64 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Int МетодыreadsPrec :: Int -> ReadS Int64 Исходный код readList :: ReadS [Int64] Исходный код | |
| Read Int8 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Int МетодыreadsPrec :: Int -> ReadS Int8 Исходный код readList :: ReadS [Int8] Исходный код | |
| Read GCDetails Исходный код | С момента: base-4.10.0.0 |
Определено в GHC.Internal.Stats МетодыreadsPrec :: Int -> ReadS GCDetails Исходный код readList :: ReadS [GCDetails] Исходный код | |
| Read RTSStats Исходный код | С момента: base-4.10.0.0 |
Определено в GHC.Internal.Stats МетодыreadsPrec :: Int -> ReadS RTSStats Исходный код readList :: ReadS [RTSStats] Исходный код | |
| Read CBlkCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CBlkCnt Исходный код readList :: ReadS [CBlkCnt] Исходный код | |
| Read CBlkSize Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CBlkSize Исходный код readList :: ReadS [CBlkSize] Исходный код | |
| Read CCc Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CCc Исходный код readList :: ReadS [CCc] Исходный код | |
| Read CClockId Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CClockId Исходный код readList :: ReadS [CClockId] Исходный код | |
| Read CDev Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CDev Исходный код readList :: ReadS [CDev] Исходный код | |
| Read CFsBlkCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CFsBlkCnt Исходный код readList :: ReadS [CFsBlkCnt] Исходный код | |
| Read CFsFilCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CFsFilCnt Исходный код readList :: ReadS [CFsFilCnt] Исходный код | |
| Read CGid Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CGid Исходный код readList :: ReadS [CGid] Исходный код | |
| Read CId Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CId Исходный код readList :: ReadS [CId] Исходный код | |
| Read CIno Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CIno Исходный код readList :: ReadS [CIno] Исходный код | |
| Read CKey Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CKey Исходный код readList :: ReadS [CKey] Исходный код | |
| Read CMode Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CMode Исходный код readList :: ReadS [CMode] Исходный код | |
| Read CNfds Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CRLim Исходный код readList :: ReadS [CRLim] Исходный код | |
| Read CSocklen Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CSocklen Исходный код readList :: ReadS [CSocklen] Исходный код | |
| Read CSpeed Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CSpeed Исходный код readList :: ReadS [CSpeed] Исходный код | |
| Read CSsize Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CSsize Исходный код readList :: ReadS [CSsize] Исходный код | |
| Read CTcflag Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CTcflag Исходный код readList :: ReadS [CTcflag] Исходный код | |
| Read CUid Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS CUid Исходный код readList :: ReadS [CUid] Исходный код | |
| Read Fd Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыreadsPrec :: Int -> ReadS Fd Исходный код readList :: ReadS [Fd] Исходный код | |
| Read Lexeme Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Lexeme Исходный код readList :: ReadS [Lexeme] Исходный код | |
| Read SomeChar Исходный код | |
Определено в GHC.Internal.TypeLits МетодыreadsPrec :: Int -> ReadS SomeChar Исходный код readList :: ReadS [SomeChar] Исходный код | |
| Read SomeSymbol Исходный код | С момента: base-4.7.0.0 |
Определено в GHC.Internal.TypeLits МетодыreadsPrec :: Int -> ReadS SomeSymbol Исходный код readList :: ReadS [SomeSymbol] Исходный код | |
| Read SomeNat Исходный код | С момента: base-4.7.0.0 |
Определено в GHC.Internal.TypeNats МетодыreadsPrec :: Int -> ReadS SomeNat Исходный код readList :: ReadS [SomeNat] Исходный код | |
| Read GeneralCategory Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read | |
| Read Word16 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Word16 Исходный код readList :: ReadS [Word16] Исходный код | |
| Read Word32 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Word32 Исходный код readList :: ReadS [Word32] Исходный код | |
| Read Word64 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Word64 Исходный код readList :: ReadS [Word64] Исходный код | |
| Read Word8 Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Word8 Исходный код readList :: ReadS [Word8] Исходный код | |
| Read Ordering Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Ordering Исходный код readList :: ReadS [Ordering] Исходный код | |
| Read Integer Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Integer Исходный код readList :: ReadS [Integer] Исходный код | |
| Read Natural Исходный код | С момента: base-4.8.0.0 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Natural Исходный код readList :: ReadS [Natural] Исходный код | |
| Read () Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS () Исходный код readList :: ReadS [()] Исходный код readPrec :: ReadPrec () Исходный код readListPrec :: ReadPrec [()] Исходный код | |
| Read Bool Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Bool Исходный код readList :: ReadS [Bool] Исходный код | |
| Read Char Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Char Исходный код readList :: ReadS [Char] Исходный код | |
| Read Double Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS Double Исходный код readList :: ReadS [Double] Исходный код | |
| Read Float Исходный код | С момента: base-2.1 |
| Read (Proxy t) Источник | С момента: base-4.7.0.0 |
| Read (U1 p) Источник | С момента: base-4.9.0.0 |
| Read (V1 p) Источник | С момента: base-4.9.0.0 |
| (Read a, Read b) => Read (a, b) Источник | С момента: base-2.1 |
| Read a => Read (Const a b) Источник |
Этот экземпляр был бы эквивалентен производным экземплярам С момента: base-4.8.0.0 |
| Read (f p) => Read (Rec1 f p) Source | С момента: base-4.7.0.0 |
| (Read a, Read b, Read c) => Read (a, b, c) Source | С момента: base-2.1 |
| (Read (f a), Read (g a)) => Read (Product f g a) Source | С момента: base-4.18.0.0 |
| (Read (f a), Read (g a)) => Read (Sum f g a) Source | С момента: base-4.18.0.0 |
| a ~~ b => Read (a :~~: b) Source | С момента: base-4.10.0.0 |
| (Read (f p), Read (g p)) => Read ((f :*: g) p) Source | С момента: base-4.7.0.0 |
| (Read (f p), Read (g p)) => Read ((f :+: g) p) Source | С момента: base-4.7.0.0 |
| Read c => Read (K1 i c p) Source | С момента: base-4.7.0.0 |
| (Read a, Read b, Read c, Read d) => Read (a, b, c, d) Source | С момента: base-2.1 |
| Read (f (g a)) => Read (Compose f g a) Source | С момента: base-4.18.0.0 |
| Read (f (g p)) => Read ((f :.: g) p) Source | Since: base-4.7.0.0 |
| Read (f p) => Read (M1 i c f p) Source | Since: base-4.7.0.0 |
| (Read a, Read b, Read c, Read d, Read e) => Read (a, b, c, d, e) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f) => Read (a, b, c, d, e, f) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g) => Read (a, b, c, d, e, f, g) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h) => Read (a, b, c, d, e, f, g, h) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i) => Read (a, b, c, d, e, f, g, h, i) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j) => Read (a, b, c, d, e, f, g, h, i, j) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k) => Read (a, b, c, d, e, f, g, h, i, j, k) Source | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l) => Read (a, b, c, d, e, f, g, h, i, j, k, l) Source | Since: base-2.1 |
Определено в GHC.Internal.Read | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m) Source | Since: base-2.1 |
Определено в GHC.Internal.Read | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source | Since: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source readList :: ReadS [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] Source readPrec :: ReadPrec (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source readListPrec :: ReadPrec [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] Source | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source | Since: base-2.1 |
Определено в GHC.Internal.Read МетодыreadsPrec :: Int -> ReadS (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source readList :: ReadS [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] Source readPrec :: ReadPrec (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source readListPrec :: ReadPrec [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] Source | |
type ReadS a = String -> [(a, String)] Source
Парсер для типа a, представленный как функция, которая принимает String и возвращает список возможных разборов в виде пар (a,String).
Обратите внимание, что такой парсер с возвратом к предыдущим состояниям очень неэффективен; чтение большой структуры может быть довольно медленным (см. ReadP).
Функции Haskell 2010
reads :: Read a => ReadS a Source
эквивалентно readsPrec с приоритетом 0.
read :: Read a => String -> a Source
Функция read считывает входные данные из строки, которая должна быть полностью обработана процессом ввода. read завершается с ошибкой error, если разбор не удался, поэтому не рекомендуется использовать её в реальных приложениях. Используйте readMaybe или readEither в качестве безопасных альтернатив.
>>> read "123" :: Int 123
>>> read "hello" :: Int *** Exception: Prelude.read: no parse
readParen :: Bool -> ReadS a -> ReadS a Source
readParen True p разбирает то, что разбирает p, но заключённое в круглые скобки.
readParen False p разбирает то, что разбирает p, но необязательно заключённое в круглые скобки.
Функция lex считывает один лексем из входных данных, игнорируя начальные пробелы, и возвращает символы, составляющие лексему. Если входная строка содержит только пробелы, lex возвращает одну успешную лексему, состоящую из пустой строки. (Таким образом, lex "" = [("","")]). Если в начале входной строки нет допустимой лексемы, lex завершается неудачей (т.е. возвращает []).
Этот лексер не полностью соответствует лексическому синтаксису Haskell в следующих аспектах:
- Квалифицированные имена обрабатываются неправильно
- Восьмеричные и шестнадцатеричные числа не распознаются как один токен
- Комментарии обрабатываются неправильно
Новые функции разбора
module Text.ParserCombinators.ReadPrec
Конструкторы
| Char Char | Символьный литерал |
| String String | Строковый литерал, с интерпретированными escape-последовательностями |
| Punc String | Знак препинания или зарезервированный символ, например |
| Ident String | Идентификатор Haskell, например |
| Symbol String | Символ Haskell, например |
| Number Number | Since: base-4.6.0.0 |
| EOF |
Экземпляры
lexP :: ReadPrec Lexeme Source
Разбор одной лексемы
parens :: ReadPrec a -> ReadPrec a Source
(parens p) разбирает "P", "(P0)", "((P0))" и т.д., где p разбирает "P" в текущем контексте приоритета и разбирает "P0" в контексте приоритета ноль
readListDefault :: Read a => ReadS [a] Source
Возможное замещающее определение для метода readList (только GHC). Это необходимо только для GHC, и даже тогда только для экземпляров Read, где readListPrec не определено как readListPrecDefault.
readListPrecDefault :: Read a => ReadPrec [a] Source
Возможная замена определения для метода readListPrec, определенного с использованием readPrec (только GHC).
readEither :: Read a => String -> Either String a Source
Разбор строки с использованием экземпляра Read. Успешно, если существует ровно один допустимый результат. Значение Left указывает на ошибку разбора.
>>> readEither "123" :: Either String Int Right 123
>>> readEither "hello" :: Either String Int Left "Prelude.read: no parse"
С версии: base-4.6.0.0
readMaybe :: Read a => String -> Maybe a Source
Разбор строки с использованием экземпляра Read. Успешно, если существует ровно один допустимый результат.
>>> readMaybe "123" :: Maybe Int Just 123
>>> readMaybe "hello" :: Maybe Int Nothing
С версии: base-4.6.0.0
© 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/Text-Read.html