haskell-notes

Библиотека включает в себя все стандартные определения, например модули Prelude, Data.List,

Control.Monad и многие другие.

Стандартные монады: transformers, mtl

Включает монады State, Writer, Reader и другие.

Контейнеры: containers

Ассоциативные массивы, множества, последовательности, деревья.

Мы будем Вам очень признательны, если Вы оцените данную книгуили оставить свой отзыв на странице комментариев.

Массивы: array

Графы: fgl

Архиваторы: zlib

Вычисление по значению: deepseq

Обычная функция seq, позволяет привести данное выражение к слабой заголовочной нормальной фор-

ме, если нам всё же необходимо вычислить значение полностью, мы можем воспользоваться функцией

deepseq из одноимённой библиотеки.

Параллельное программирование: stm и parallel

Временная арифметика, календарь: time

Парсинг: parsec

Регулярные выражения: regexbase, regexposix

Построение структурированного текста: pretty

Тестирование программ: HUnit, QuickCheck

Управление файловой системой: directory

Работа с путями к файлам/директориям: filepath

Сетевые библиотеки: network, HTTP, cgi.

3д Графика: OpenGL, GLUT.

Монадные трансформеры: transformers

Мы не коснулись этой темы, но вот краткое пояснение: монадные трансформеры позволяют комбини-

ровать несколько монад. Например, если нам нужно использовать чтение-запись в файл совместно с

изменяемым состоянием.

324 | Приложения

Эффективные типы данных

Списки: dlist – эффективное объединение списков.

Если вы часто пользуетесь операцией ++, то необходимо заботиться о том, чтобы скобки всегда группи-

ровались вправо. Как в a++(b++(c++d)). Иначе время объединения из линейного превратится в квад-

ратичное. Библиотека dlist предоставляет специальный тип списков, для которых не важно как груп-

пируются скобки при объединении. Время объединения всегда будет линейным.

Строки: bytestring

Если ваша программа загружена обработкой строк, и работает слишком медленно, рассмотрите вари-

ант перехода со стандартных строк на тип ByteString, это может увеличить быстродействие на поря-

док.

Текст: text или utf8string

Работа с текстом в формате Unicode. Часто проблемы возникают при необходимости обработки рус-

ского текста закодированного в Unicode. Для решения этой проблемы можно воспользоваться одной

из этих библиотек.

Двоичные данные: binary или cereal – Сериализация/десериализация данных.

Случайные числа: mersennerandompure64

Эффективный генератор случайных чисел.

Ввод-вывод: iteratee

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

файлов, эта библиотека может существенно помочь.

Контейнеры: unorderedcontainers

Альтернатива стандартной библиотеке containers. Эффективные типы Map и Set.

Последовательности: fingertree, seq

Используются для работы с очередями различного типа.

Массивы: vector

Эффективный тип для представления массивов. Замена стандартному типу Data.Array.

• Самые эффективные изменяемые хэш-таблицы: hashtables

Матрицы: hmatrix, repa

Разработка программ

• Тестирование, проверка инвариантов: QuickCheck

• Оценка быстродействия: criterion

• Просмотр Core в человеческом виде: ghccore

• Настройка сборки мусора: ghcgctune

• Трассировка программ: hat

И все-все-все

Парсинг: parsec или attoparsec

Языки разметки: pandoc, xhtml, tagsoup, blazehtml, html

XML: xml, HaXml

JSON: json, aeson

Web: happstack, snap, yesod, hakyll

Сетевые библиотеки: network, HTTP, cgi, curl

Графика: diagrams, gnuplot, SDL

Обзор Hackage | 325

3д графика: OpenGL, GLFW, GLUT

Базы данных: HDBC

Встраиваемые приложения реального времени с жёсткими ограничениями: atom

GUI: wxHaskell, gtk2hs

Оценка производительности программ: criterion

Статистика: statistics

Парсинг и генерация кода Haskell: haskell-src-exts

FRP: reactive, reactivebanana, yampa

Линейная алгебра: vectorspace, hmatrix

326 | Приложения

Места

Где культивируется Haskell?

Университеты

Посмотрим на университеты, в которых Haskell преподают, развивают и применяют:

• Британия: Эдинбург, Ноттингем, Оксфорд (лаборатория информатики), Глазго.

• Америка: Йельский, Коннектикут, Техас, Оклахома, Портлэнд, Канзас

• Нидерланды: Утрехт

• Швеция: Технологический Чалмерса, Гёттинген.

• Австралия: Новый Южный Уэльс, Западной Австралии

• и другие, полный список на http://www.haskell.org/haskellwiki/Haskell_in_education.

Компании

• Microsoft Research – разрабатывают GHC.

• Galios – ведут исследования и решают практические задачи на ФП-языках, особенно на Haskell.

• Well-Typed – решают практические задачи, консультируют и всё на Haskell. Также занимаются органи-

зацией Haskell-слётов, поддержкой стандартных библиотек.

• и другие, полный список на http://www.haskell.org/haskellwiki/Haskell_in_industry

Места | 327

Document Outline

Предисловие

Структура книги

Основные понятия

Благодарности

Основы

Общая картина

Типы

Значения

Классы типов

Контекст классов типов. Суперклассы

Экземпляры классов типов

Ядро Haskell

Двумерный синтаксис

Краткое содержание

Упражнения

Первая программа

Интерпретатор

У-вей

Логические значения

Класс Show. Строки и символы

Строки и символы

Пример: Отображение дат и времени

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162