52700.fb2
org/hp-tmp/docs.
• Начало-всех-начал: base
Библиотека включает в себя все стандартные определения, например модули Prelude, Data.List,
Control.Monad и многие другие.
• Стандартные монады: transformers, mtl
Включает монады State, Writer, Reader и другие.
• Контейнеры: containers
Ассоциативные массивы, множества, последовательности, деревья.
• Массивы: array
• Графы: fgl
• Архиваторы: zlib
• Вычисление по значению: deepseq
Обычная функция seq, позволяет привести данное выражение к слабой заголовочной нормальной фор-
ме, если нам всё же необходимо вычислить значение полностью, мы можем воспользоваться функцией
deepseq из одноимённой библиотеки.
• Параллельное программирование: stm и parallel
• Временная арифметика, календарь: time
• Парсинг: parsec
• Регулярные выражения: regex-base, regex-posix
• Построение структурированного текста: pretty
• Тестирование программ: HUnit, QuickCheck
• Управление файловой системой: directory
• Работа с путями к файлам/директориям: filepath
• Сетевые библиотеки: network, HTTP, cgi.
• 3д Графика: OpenGL, GLUT.
• Монадные трансформеры: transformers
Мы не коснулись этой темы, но вот краткое пояснение: монадные трансформеры позволяют комбини-
ровать несколько монад. Например, если нам нужно использовать чтение-запись в файл совместно с
изменяемым состоянием.
324 | Приложения
Эффективные типы данных
• Списки: dlist – эффективное объединение списков.
Если вы часто пользуетесь операцией ++, то необходимо заботиться о том, чтобы скобки всегда группи-
ровались вправо. Как в a++(b++(c++d)). Иначе время объединения из линейного превратится в квад-
ратичное. Библиотека dlist предоставляет специальный тип списков, для которых не важно как груп-
пируются скобки при объединении. Время объединения всегда будет линейным.
• Строки: bytestring
Если ваша программа загружена обработкой строк, и работает слишком медленно, рассмотрите вари-
ант перехода со стандартных строк на тип ByteString, это может увеличить быстродействие на поря-
док.
• Текст: text или utf8-string
Работа с текстом в формате Unicode. Часто проблемы возникают при необходимости обработки рус-
ского текста закодированного в Unicode. Для решения этой проблемы можно воспользоваться одной
из этих библиотек.
• Двоичные данные: binary или cereal – Сериализация/десериализация данных.
• Случайные числа: mersenne-random-pure64
Эффективный генератор случайных чисел.
• Ввод-вывод: iteratee
Эффективная реализация ввода-вывода. Если вам нужно читать или писать данные из большого числа