Набросок решения
Каркас. Типы и классы
Ленивое программирование
Пятнашки
Цикл игры
Приведём код в порядок
Формат запросов
Последние штрихи
Правила игры
Упражнения
Лямбда-исчисление
Лямбда исчисление без типов
Составление термов
Абстракция
Редукция. Вычисление термов
Рекурсия. Комбинатор неподвижной точки
Кодирование структур данных
Конструктивная математика
Расширение лямбда исчисления
Комбинаторная логика
Связь с лямбда-исчислением
Немного истории
Лямбда-исчисление с типами
Краткое содержание
Упражнения
Теория категорий
Категория
Функтор
Естественное преобразование
Монады
Категория Клейсли
Дуальность
Начальный и конечный объекты
Начальный объект
Конечный объект
Сумма и произведение
Экспонента
Краткое содержание
Упражнения
Категориальные типы
Программирование в стиле оригами
Индуктивные и коиндуктивные типы
Существование начальных и конечных объектов
Гиломорфизм
Краткое содержание
Упражнения
Дополнительные возможности
Пуд сахара
Сахар для списков
Сахар для монад, do-нотация
Расширения
Обобщённые алгебраические типы данных
Семейства типов
Классы с несколькими типами
Экземпляры классов для синонимов
Функциональные зависимости
Ограничение мономорфизма
Полиморфизм высших порядков
Лексически связанные типы
И другие удобства и украшения
Краткое содержание
Упражнения
Средства разработки
Пакеты
Создание пакетов
Создаём библиотеки
Создаём исполняемые программы
Установка пакета
Удаление библиотеки
Репозиторий пакетов Hackage
Дополнительные атрибуты пакета
Установка библиотек для профилирования
Создание документации с помощью Haddock
Комментарии к определениям
Комментарии к модулю
Структура страницы документации
Разметка
Краткое содержание
Упражнения
Ориентируемся по карте
Алгоритм эвристического поиска А*
Поиск маршрутов в метро
Тестирование с помощью QuickCheck
Формирование тестовой выборки
Классификация тестовых случаев
Оценка быстродействия с помощью criterion
Основные типы criterion
Краткое содержание
Упражнения
Императивное программирование
Основные библиотеки
Изменяемые значения
OpenGL
Chipmunk
Боремся с IO
Определяемся с типами
Структура проекта
Детализируем функции обновления состояния игры
Детализируем дальше
Краткое содержание
Упражнения
Музыкальный пример
Музыкальная нотация
Нотная запись в европейской традиции
Протокол midi
Музыкальная запись в виде событий
Преобразование событий во времени
Композиция треков
Экземпляры стандартных классов
Ноты в midi
Синонимы для нот
Перевод в midi
Пример
Эффективное представление музыкальной нотации
Краткое содержание
Упражнения
Приложения
Начало работы с Haskell
Литература
Книги
Тематический сборник
И все-все-все
Обзор Hackage
Стандартные библиотеки
Эффективные типы данных
Разработка программ
И все-все-все
Места
Университеты
Компании