Липовача М., Изучай Haskell во имя добра!
ДМК-Пресс, 2017 г., 978-5-97060-025-2, 978-5-97060-510-3
Описание книги
Ключевые слова
Поделиться ссылкой на книгу
Содержание книги
Предисловие
Введение
1. На старт, внимание, марш!
Вызов функций
Функции: первые шаги
Списки
Конкатенация
Обращение к элементам списка
Списки списков
Сравнение списков
Другие операции над списками
Интервалы
Генераторы списков
Кортежи
Использование кортежей
Использование пар
В поисках прямоугольного треугольника
2. Типы и классы типов
Поверь в типы
Явное определение типов
Обычные типы в языке Haskell
Типовые переменные
Классы типов
Класс Eq
Класс Ord
Класс Show
Класс Read
Класс Enum
Класс Bounded
Класс Num
Класс Floating
Класс Integral
Несколько заключительных слов о классах типов
3. Синтаксис функций
Сопоставление с образцом
Сопоставление с парами
Сопоставление со списками и генераторы списков
Именованные образцы
Эй, стража!
Где же ты, where?!
Область видимости декларации where
Сопоставление с образцами в секции where
Функции в блоке where
Пусть будет let
Выражения let в генераторах списков
Выражения let B GHCi
Выражения для выбора из вариантов
4. Рекурсия
Привет, рекурсия
Максимум удобства
Ещё немного рекурсивных функций
Функция replicate
Функция take
Функция reverse
Функция repeat
Функция zip
Функция elem
Сортируем, быстро!
Алгоритм
Определение
Думаем рекурсивно
5. Функции высшего порядка
Каррированные функции
Сечения
Печать функций
Немного о высоких материях
Реализация функции zipWith
Реализация функции flip
Инструментарий функционального программиста
Функция тар
Функция filter
Ещё немного примеров использования тар и filter
Функция тар для функций нескольких переменных
Лямбда-выражения
Я вас сверну!
Левая свёртка foldl
Правая свёртка foldr
Функции foldl 1 и foldr 1
Примеры свёрток
Иной взгляд на свёртки
Свёртка бесконечных списков
Сканирование
Применение функций с помощью оператора $
Композиция функций
Композиция функций с несколькими параметрами
Бесточечная нотация
6. Модули
Импорт модулей
Решение задач средствами стандартных модулей
Подсчёт слов
Иголка в стоге сена
Салат из шифра Цезаря
О строгих левых свёртках
Поищем числа
Отображение ключей назначения
Почти хорошо: ассоциативные списки
Модуль Data. Map
Написание собственных модулей
Модуль Geometry
Иерархия модулей
7. Создание новых типов и классов типов
Введение в алгебраические типы данных
Отличная фигура за 15 минут
Верный способ улучшить фигуру
Фигуры на экспорт
Синтаксис записи с именованными полями
Параметры типа
Параметризовать ли машины?
Векторы судьбы
Производные экземпляры
Сравнение людей на равенство
Покажи мне, как читать
Порядок в суде!
Любой день недели
Синонимы типов
Улучшенная телефонная книга
Параметризация синонимов
Иди налево, потом направо
Рекурсивные структуры данных
Улучшение нашего списка
Вырастим-ка дерево
Классы типов, второй семестр
"Внутренности" класса Eq
Тип для представления светофора
Наследование классов
Создание экземпляров классов для
параметризованных типов
Класс типов "да-нет"
Класс типов Functor
Экземпляр класса Functor для типа Maybe
Деревья тоже являются функторами
И тип Either является функтором
Сорта и немного тип-фу
8. Ввод-вывод
Разделение "чистого" и "нечистого"
Привет, мир!
Объединение действий ввода-вывода
Использование ключевого слова let внутри блока
do
Обращение строк
Некоторые полезные функции для ввода-вывода
Функция putStr
Функция putChar
Функция print
Функция when
Функция sequence
Функция тарМ
Функция forever
Функция forM
Обзор системы ввода-вывода
9. Больше ввода и вывода
Файлы и потоки
Перенаправление ввода
Получение строк из входного потока
Преобразование входного потока
Чтение и запись файлов
Использование функции withFile
Время заключать в скобки
Хватай дескрипторы
Список дел
Удаление заданий
Уборка
Аргументы командной строки
Ещё больше шалостей со списком дел
Многозадачный список задач
Работаем с некорректным вводом
Случайность
Подбрасывание монет
Ещё немного функций, работающих со
случайностью
Случайность и ввод-вывод
Bytestring: тот же String, но быстрее
Строгие и ленивые
Копирование файлов при помощи Bytestring
Исключения
Обработка исключений, возникших в чистом коде
Обработка исключений ввода-вывода
Вспомогательные функции для работы с
исключениями
10. Решение задач в функциональном стиле
Вычисление выражений в обратной польской записи
Вычисление выражений в ОПЗ
Реализация функции вычисления выражений в ОПЗ
Добавление новых операторов
Из аэропорта в центр
Вычисление кратчайшего пути
Представление пути на языке Haskell
Реализация функции поиска оптимального пути
Получение описания дорожной системы из
внешнего источника
11. Аппликативные функторы
Функторы возвращаются
Действия ввода-вывода в качестве функторов
Функции в качестве функторов
Законы функторов
Закон 1
Закон 2
Нарушение закона
Использование аппликативных функторов
Поприветствуйте аппликативные функторы
Аппликативный функтор Maybe
Аппликативный стиль
Списки
Тип IO-тоже аппликативный функтор
Функции в качестве аппликативных функторов
Застёгиваемые списки
Аппликативные законы
Полезные функции для работы с аппликативными
функторами
12. Моноиды
Оборачивание существующего типа в новый тип
Использование ключевого слова newtype для
создания экземпляров классов типов
О ленивости newtype
Ключевое слово type против newtype и data
В общих чертах о моноидах
Класс типов Monoid
Законы моноидов
Познакомьтесь с некоторыми моноидами
Списки являются моноидами
Типы Product и Sum
Типы Any и АН
Моноид Ordering
Моноид Maybe
Свёртка на моноидах
13. Пригоршня монад
Совершенствуем наши аппликативные функторы
Приступаем к типу Maybe
Класс типов Monad
Прогулка по канату
Код, код, код
Я улечу
Банан на канате
Нотация do
Делай как я
Пьер возвращается
Сопоставление с образцом и неудача в
вычислениях
Списковая монада
Нотация do и генераторы списков
Класс MonadPlus и функция guard
Ход конём
Законы монад
Левая единица
Правая единица
Ассоциативность
14. Ещё немного монад
Writer? Я о ней почти не знаю!
Моноиды приходят на помощь
Тип Writer
Использование нотации do с типом Writer
Добавление в программы функции журналирования
Добавление журналирования в программы
Неэффективное создание списков
Разностные списки
Сравнение производительности
Монада Readег? Тьфу, опять эти шуточки
функции в качестве монад
Монада Reader
Вкусные вычисления с состоянием
Вычисления с состоянием
Стеки и чебуреки
Монада State
Получение и установка состояния
Случайность и монада State
Свет мой, Error, скажи, да всю правду доложи
Некоторые полезные монадические функции
IiftM и компания
Функция join
Функция tilterM
Функция foldM
Создание безопасного калькулятора выражений в
обратной польской записи
Композиция монадических функций
Создание монад
15. Застёжки
Прогулка
Тропинка из хлебных крошек
Движемся обратно вверх
Манипулируем деревьями в фокусе
Идем прямо на вершину, где воздух чист и свеж!
Фокусируемся на списках
Очень простая файловая система
Создаём застёжку для нашей файловой системы
Манипулируем файловой системой
Осторожнее- смотрите под ноги!
Благодарю за то, что прочитали!
Об авторе
Отзывы
Но качество издания просто ужасное. Это издательство уже в который раз выпускает книги просто сажая страницы на клей, не разбивая при этом листы на группы страниц. Как результат, еще перед тем, как дочитал книгу до конца, стали выпадать страницы и читать под конец стало совсем неудобно.
К этому можно добавить низкое качество печати: не пропечатываются некоторые символы, особенно символ "^" в кодах программ
Последние поступления в рубрике "Тематика определяется"
Математика. Подготовка к ЕГЭ. Задачи с параметрами.10-11 классы
В предлагаемом пособии представлен обширный материал, посвященный двум заключительным и сложным темам ЕГЭ профильного уровня: задачам с параметрами и числам и их свойствам. На многочисленных примерах с подробными решениями и обоснованиями (как и требуется на экзамене) показаны различные методы и решения задач.... | |
План счетов бухгалтерского учета с последними изменениями
Читателю предлагается самая последняя редакция Плана счетов бухгалтерского учета финансово-хозяйственной деятельности организаций и инструкции по его применению с учетом последних приказов Минфина РФ. План счетов - это важнейший инструмент бухгалтерского учета, настольная книга для каждого практического бухгалтера.... | |
На ферме. Книжка с наклейками
Игры с наклейками - занятие не только интересное, но и полезное. С этой книгой малыш познакомится с различными видами транспорта, потренируется решать простые логические задачки и находить соответствия.... |
Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Липовача М., Изучай Haskell во имя добра! в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.