Text.Show
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD (см. файл libraries/base/LICENSE) |
| Поддерживающий | libraries@haskell.org |
| Устойчивость | временная |
| Переносимость | переносимая |
| Безопасный Haskell | Безопасный |
| Язык | Haskell2010 |
Описание
Преобразование значений в читаемые строки: класс Show и связанные функции.
тип ShowS = String -> String Источник
Функции shows возвращают функцию, которая добавляет результат String к существующей String. Это позволяет выполнять конкатенацию результатов с постоянной сложностью с использованием композиции функций.
Преобразование значений в читаемые String.
Производные экземпляры Show обладают следующими свойствами, совместимыми с производными экземплярами Read.
- Результат
show— это синтаксически правильное выражение Haskell, содержащее только константы, учитывая объявления фиксов, действующие в момент объявления типа. Оно содержит только имена конструкторов, определенные в типе данных, скобки и пробелы. При использовании полей с метками конструктора используются также фигурные скобки, запятые, имена полей и знаки равенства. - Если конструктор определен как инфиксный оператор, то
showsPrecбудет генерировать инфиксные применения конструктора. - Представление будет заключено в скобки, если приоритет конструктора верхнего уровня в
xменьшеd(ассоциативность игнорируется). Таким образом, еслиdявляется0, то результат никогда не окружен скобками; еслиdявляется11, он всегда окружен скобками, за исключением атомарных выражений. - Если конструктор определен с использованием синтаксиса записей, то
showбудет генерировать форму синтаксиса записей с полями в том же порядке, что и в исходном объявлении.
Например, при объявлениях
infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a
производный экземпляр Show эквивалентен
instance (Show a) => Show (Tree a) where
showsPrec d (Leaf m) = showParen (d > app_prec) $
showString "Leaf " . showsPrec (app_prec+1) m
where app_prec = 10
showsPrec d (u :^: v) = showParen (d > up_prec) $
showsPrec (up_prec+1) u .
showString " :^: " .
showsPrec (up_prec+1) v
where up_prec = 5
Обратите внимание, что правоассоциативность :^: игнорируется. Например,
-
show (Leaf 1 :^: Leaf 2 :^: Leaf 3)порождает строку"Leaf 1 :^: (Leaf 2 :^: Leaf 3)".
Методы
Аргументы
| :: Int | приоритет оператора в окружающем контексте (число от |
| -> a | значение, которое нужно преобразовать в |
| -> ShowS |
Преобразуйте значение в читаемую String.
showsPrec должно удовлетворять закону
showsPrec d x r ++ s == showsPrec d x (r ++ s)
Производные экземпляры Read и Show удовлетворяют следующим условиям:
То есть, readsPrec анализирует строку, сгенерированную showsPrec, и возвращает значение, с которым showsPrec начиналось.
Специализированная версия showsPrec, использующая контекст приоритета ноль и возвращающая обычную String.
showList :: [a] -> ShowS Источник
Метод showList предоставляет программисту возможность указать специализированный способ отображения списков значений. Например, он используется в предопределенном экземпляре Show типа Char, где значения типа String должны отображаться в двойных кавычках, а не в квадратных скобках.
Примеры
| Show (FunPtr a) | |
| Show (U1 p) | |
| Show p => Show (Par1 p) | |
| Show a => Show (Maybe a) | |
| Show a => Show (Down a) | |
| Show a => Show (Last a) | |
| Show a => Show (First a) | |
| Show a => Show (Product a) | |
| Show a => Show (Sum a) | |
| Show a => Show (Dual a) | |
| Show (ForeignPtr a) | |
| Show a => Show (ZipList a) | |
| Show a => Show (Complex a) | |
| HasResolution a => Show (Fixed a) | |
| Show a => Show (Identity a) | Этот экземпляр был бы эквивалентен производным экземплярам нового типа |
| (Show a, Show b) => Show (Either a b) | |
| Show (f p) => Show (Rec1 f p) | |
| (Show a, Show b) => Show (a, b) | |
| Show (ST s a) | |
| Show (Proxy k s) | |
| Show a => Show (Const a b) | |
| Show c => Show (K1 i c p) | |
| (Show (f p), Show (g p)) => Show ((:+:) f g p) | |
| (Show (f p), Show (g p)) => Show ((:*:) f g p) | |
| Show (f (g p)) => Show ((:.:) f g p) | |
| (Show a, Show b, Show c) => Show (a, b, c) | |
| Show ((:~:) k a b) | |
| Show (Coercion k a b) | |
| Show (f a) => Show (Alt k f a) | |
| Show (f p) => Show (M1 i c f p) | |
| (Show a, Show b, Show c, Show d) => Show (a, b, c, d) | |
| (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e) | |
| (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n) |
shows :: Show a => a -> ShowS Source
equivalent to showsPrec with a precedence of 0.
showChar :: Char -> ShowS Source
функция-утилита, преобразующая Char в функцию показа, которая просто добавляет символ без изменений.
showString :: String -> ShowS Source
функция-утилита, преобразующая String в функцию показа, которая просто добавляет строку без изменений.
showParen :: Bool -> ShowS -> ShowS Source
функция-утилита, которая обрамляет внутреннюю функцию показа скобками, когда параметр Bool равен True.
showListWith :: (a -> ShowS) -> [a] -> ShowS Source
Отображает список (с использованием квадратных скобок и запятых), задавая функцию для отображения элементов.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Text-Show.html