Класс Show. Строки и символы
Строки и символы
Пример: Отображение дат и времени
Автоматический вывод экземпляров классов типов
Арифметика
Класс Eq. Сравнение на равенство
Класс Num. Сложение и умножение
Класс Fractional. Деление
Стандартные числа
Документация
Краткое содержание
Упражнения
Типы
Структура алгебраических типов данных
Структура констант
Несколько слов о теории графов
Строчная запись деревьев
Структура функций
Композиция и частичное применение
Декомпозиция и сопоставление с образцом
Проверка типов
Проверка типов с контекстом
Ограничение мономорфизма
Рекурсивные типы
Краткое содержание
Упражнения
Декларативный и композиционный стиль
Локальные переменные
where-выражения
let-выражения
Декомпозиция
Сопоставление с образцом
case-выражения
Условные выражения
Охранные выражения
if-выражения
Определение функций
Уравнения
Безымянные функции
Какой стиль лучше?
Краткое содержание
Упражнения
Функции высшего порядка
Обобщённые функции
Функция тождества
Константная функция
Функция композиции
Аналогия с числами
Функция перестановки
Функция on
Функция применения
Приоритет инфиксных операций
Приоритет функции композиции
Приоритет функции применения
Функциональный калькулятор
Функции, возвращающие несколько значений
Комбинатор неподвижной точки
Краткое содержание
Основные функции высшего порядка
Приоритет инфиксных операций
Упражнения
Функторы и монады: теория
Композиция функций
Класс Category
Специальные функции
Взаимодействие с внешним миром
Три композиции
Обобщённая формулировка категории Клейсли
Примеры специальных функций
Частично определённые функции
Многозначные функции
Применение функций
Применение функций многих переменных
Несколько полезных функций
Функторы и монады
Функторы
Аппликативные функторы
Монады
Свойства классов
Полное определение классов
Исторические замечания
Краткое содержание
Упражнения
Функторы и монады: примеры
Случайные числа
Конечные автоматы
Отложенное вычисление выражений
Тип Map
Накопление результата
Тип-обёртка newtype
Записи
Накопление чисел
Накопление логических значений
Накопление списков
Монада изменяемых значений ST
Тип ST
Императивные циклы
Быстрая сортировка
Краткое содержание
Упражнения
IO
Чистота и побочные эффекты
Монада IO
Как пишутся программы
Типичные задачи IO
Вывод на экран
Ввод пользователя
Чтение и запись файлов
Ленивое и энергичное чтение файлов
Аргументы программы
Вызов других программ
Случайные значения
Исключения
Потоки текстовых данных
Форточка в мир побочных эффектов
Отладка программ
Композиция монад
Краткое содержание
Упражнения
Редукция выражений
Стратегии вычислений
Преимущества и недостатки стратегий
Вычисление по необходимости
Аннотации строгости
Принуждение к СЗНФ с помощью seq
Функции с хвостовой рекурсией
Тонкости применения seq
Энергичные образцы
Энергичные типы данных
Пример ленивых вычислений
Краткое содержание
Упражнения
Реализация Haskell в GHC
Этапы компиляции
Язык STG
Вычисление STG
Куча
Стек
Правила общие для обеих стратегий вычисления
Правила для стратегии вставка-вход
Правила для стратегии вычисление-применение
Представление значений в памяти. Оценка занимаемой памяти
Управление памятью. Сборщик мусора
Статистика выполнения программы
Статистика вычислителя
Профилирование функций
Поиск источников внезапной остановки
Оптимизация программ
Флаги оптимизации
Прагма INLINE
Прагма RULES
Прагма UNPACK
Краткое содержание
Упражнения
Ленивые чудеса
Численные методы
Дифференцирование
Интегрирование
Степенные ряды
Арифметика рядов
Производная и интеграл
Элементарные функции
Водосборы
Ленивее некуда
Краткое содержание
Упражнения
Структурная рекурсия
Свёртка
Логические значения
Натуральные числа
Maybe
Списки
Деревья
Развёртка
Списки
Потоки
Натуральные числа
Краткое содержание
Упражнения
Поиграем
Стратегия написания программ
Описание задачи