Функциональное программирование на F#
Дмитрий Сошников
Автор этой книги имеет богатый опыт преподавания курсов функционального программирования на базе F# в ведущих российских университетах, в то же время, будучи технологическим евангелистом, Майкрософт, он умеет доходчиво объяснить концепции функционального программирования даже начинающему разработчику ПО, не прибегая к сложным понятиям лямбда-исчисления.
Книга содержит много полезных примеров использования F# для решения практических задач: доступа к реляционным или слабоструктурированным XML-данным, использование F# для веб-разработки и веб-майнинга, визуализация данных и построение диаграмм, написание сервисов для облачных вычислений и асинхронных приложений для Windows Phone 7. Используя фрагменты кода, рассмотренные в книге, читатели могут немедленно приступить к решению своих практических задач на F#.
Издательство: ДМК Пресс, 2011 г.
ISBN 978-5-94074-689-8
Количество страниц: 192.
Содержание книги «Функциональное программирование на F#»:
- 6 Предисловие Дона Сайма
- 8 Предисловие автора
- 10 0. Введение
- 10 0.1. Зачем изучать функциональное программирование
- 12 0.2. О чем и для кого эта книга
- 13 0.3. Как установить и начать использовать F#
- 17 1. Основы функционального программирования
- 17 1.1. Применение функций vs. Присваивание
- 19 1.2. Упорядоченные кортежи, списки и вывод типов
- 20 1.3. Функциональные типы и описание функций
- 22 1.4. Каррирование
- 23 1.5. Условный оператор и опциональный тип
- 25 1.6. Типы данных, размеченное объединение и сопоставление с образцом
- 27 1.7. Рекурсия, функции-параметры и цикл for
- 28 1.8. Конструкции > >, |>
- 29 1.9. Пример – построение множества Мандельброта
- 31 1.10. Интероперабельность с .NET
- 34 2. Рекурсивные структуры данных
- 34 2.1. Списки и конструкторы списков
- 35 2.2. Сопоставление с образцом
- 36 2.3. Простейшие функции обработки списков
- 37 2.4. Функции высших порядков
- 37 2.4.1. Отображение
- 39 2.4.2. Фильтрация
- 41 2.4.3. Свертка
- 43 2.4.4. Другие функции высших порядков
- 44 2.5. Генераторы списков
- 45 2.6. Хвостовая рекурсия
- 47 2.7. Сложностные особенности работы со списками
- 50 2.8. Массивы
- 52 2.9. Многомерные массивы и матрицы
- 52 2.9.1. Списки списков, или непрямоугольные массивы (Jаgged Arrays)
- 53 2.9.2. Многомерные массивы .NET
- 54 2.9.3. Специализированные типы для матриц и векторов
- 55 2.9.4. Разреженные матрицы
- 56 2.9.5. Использование сторонних математических пакетов
- 56 2.10. Деревья общего вида
- 59 2.11. Двоичные деревья
- 59 2.11.1. Определение
- 59 2.11.2. Обход двоичных деревьев
- 60 2.11.3. Деревья поиска
- 62 2.11.4. Деревья выражений и абстрактные синтаксические деревья (AST)
- 63 2.12. Другие структуры данных
- 63 2.12.1. Множества (Set)
- 63 2.12.2. Отображения (Map)
- 64 2.12.3. Хеш-таблицы
- 66 3. Типовые приемы функционального программирования
- 66 3.1. Замыкания
- 67 3.2. Динамическое связывание и mutable-переменные
- 68 3.3. Генераторы и ссылочные переменные ref
- 71 3.4. Ленивые последовательности (seq)
- 73 3.4.1. Построение частотного словаря текстового файла
- 74 3.4.2. Вычисление числа π методом Монте-Карло
- 76 3.5. Ленивые и энергичные вычисления
- 79 3.6. Мемоизация
- 81 3.7. Продолжения
- 84 4. Императивные и объектно-ориентированные возможности F#
- 84 4.1. Мультипарадигмальность языка F#
- 85 4.2. Элементы императивного программирования на F#
- 85 4.2.1. Использование изменяемых переменных и ссылок
- 86 4.2.2. Цикл с предусловием
- 87 4.2.3. Условный оператор
- 87 4.2.4. Null-значения
- 87 4.2.5. Обработка исключительных ситуаций
- 89 4.3. Объектно-ориентированное программирование на F#
- 89 4.3.1. Записи
- 90 4.3.2. Моделирование объектной ориентированности через записи и замыкания
- 91 4.3.3. Методы
- 92 4.3.4. Интерфейсы
- 93 4.3.5. Создание классов с помощью делегирования
- 94 4.3.6. Создание иерархии классов
- 97 4.3.7. Расширение функциональности имеющихся классов
- 97 4.3.8. Модули
- 99 5. Метапрограммирование
- 99 5.1. Языково-ориентированное программирование
- 102 5.2. Активные шаблоны
- 103 5.3. Квотирование
- 106 5.4. Конструирование выражений, частичное применение функции и суперкомпиляция
- 107 5.5. Монады
- 108 5.5.1. Монада ввода-вывода
- 110 5.5.2. Монадические свойства
- 111 5.5.3. Монада недетерминированных вычислений
- 112 5.6. Монадические выражения
- 115 6. Параллельное и асинхронное программирование
- 115 6.1. Асинхронные выражения и параллельное программирование
- 116 6.2. Асинхронное программирование
- 118 6.3. Асинхронно-параллельная обработка файлов
- 120 6.4. Агентный паттерн проектирования
- 122 6.5. Использование MPI
- 127 7. Решение типовых задач
- 127 7.1. Вычислительные задачи
- 127 7.1.1. Вычисления с высокой точностью
- 128 7.1.2. Комплексный тип
- 128 7.1.3. Единицы измерения
- 129 7.1.4. Использование сторонних математических пакетов
- 131 7.2. Доступ к данным
- 131 7.2.1. Доступ к реляционным базам данных (SQL Server)
- 136 7.2.2. Доступ к слабоструктурированным данным XML
- 139 7.2.3. Работа с данными в Microsoft Excel
- 143 7.3. Веб-программирование
- 144 7.3.1. Доступ к веб-сервисам, XML-данным, RSS-потокам
- 144 7.3.2. Доступ к текстовому содержимому веб-страниц
- 147 7.3.3. Использование веб-ориентированных программных интерфейсов на примере Bing Search API
- 148 7.3.4. Реализация веб-приложений на F# для ASP.NET Web Forms
- 150 7.3.5. Реализация веб-приложений на F# для ASP.NET MVC
- 152 7.3.6. Реализация веб-приложений на F# при помощи системы WebSharper
- 156 7.3.7. Облачное программирование на F# для Windows Azure
- 158 7.4. Визуализация и работа с графикой
- 159 7.4.1. Двухмерная графика на основе Windows Forms API
- 160 7.4.2. Использование элемента Chart
- 164 7.4.3. 3D-визуализация с помощью DirectX и/или XNA
- 171 7.5. Анализ текстов и построение компиляторов
- 171 7.5.1. Реализация синтаксического разбора методом рекурсивного спуска
- 174 7.5.2. Использование fslex и fsyacc
- 179 7.5. Создание F#-приложений для Silverlight и Windows Phone 7
- 127 7.1. Вычислительные задачи
- 185 Вместо заключения
- 190 Рекомендуемая литература
Инструкция как скачать книгу Дмитрий Сошников: Функциональное программирование на F# в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.