52700.fb2 Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 355

Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 355

Полный список библиотек для Haskell Platform можно посмотреть на сайте http://lambda.haskell.

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

Эффективная реализация ввода-вывода. Если вам нужно читать или писать данные из большого числа