Функциональное программирование на F#

книга Дмитрия Сошникова

Оглавление

  1. ВВЕДЕНИЕ
    • Зачем изучать функциональное программирование
    • О чем и для кого эта книга
    • Как установить и начать использовать F#
  2. ОСНОВЫ ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ
    • Применение функций vs. присваивание
    • Упорядоченные кортежи, списки и вывод типов
    • Функциональные типы и описание функций
    • Каррирование
    • Условный оператор и опциональный тип
    • Типы данных, размеченное объединение и сопоставление с образцом
    • Рекурсия, функции-параметры и цикл for
    • Конструкции >>, |>
    • Пример – построение множества Мандельброта
    • Интероперабельность с .NET
  3. РЕКУРСИВНЫЕ СТРУКТУРЫ ДАННЫХ
    • Списки и конструкторы списков
    • Сопоставление с образцом
    • Простейшие функции обработки списков
    • Функции высших порядков
      • Отображение
      • Фильтрация
      • Свёртка
      • Другие функции высших порядков
    • Генераторы списков
    • Хвостовая рекурсия
    • Сложностные особенности работы со списками
    • Массивы
    • Многомерные массивы и матрицы
      • Списки списков, или непрямоугольные массивы (Jugged Arrays)
      • Многомерные массивы .NET
      • Специализированные типы для матриц и векторов
      • Разреженные матрицы
      • Использование сторонних математических пакетов
    • Деревья общего вида
    • Двоичные деревья
      • Определение
      • Обход двоичных деревьев
      • Деревья поиска
      • Деревья выражений и абстрактные синтаксические деревья (AST)
    • Другие структуры данных
      • Множества (Set)
      • Отображения (Map)
      • Хеш-таблицы
  4. ТИПОВЫЕ ПРИЁМЫ ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ
    • Замыкания
    • Динамическое связывание и mutable-переменные
    • Генераторы и ссылочные переменные ref
    • Ленивые последовательности (seq)
      • Построение частотного словаря текстового файла
      • Вычисление числа Пи методом Монте-Карло
    • Ленивые и энергичные вычисления
    • Мемоизация
    • Продолжения
  5. ИМПЕРАТИВНЫЕ И ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ВОЗМОЖНОСТИ F#
    • Мультипарадигмальность языка F#
    • Элементы императивного программирования на F#
      • Использование изменяемых переменных и ссылок
      • Цикл с предусловием
      • Условный оператор
      • Null-значения
      • Обработка исключительных ситуаций
    • Объектно-ориентированное программирование на F#
      • Записи
      • Моделирование объектной ориентированности через записи и замыкания
      • Методы
      • Интерфейсы
      • Создание классов с помощью делегирования
      • Создание иерархии классов
      • Расширение функциональности имеющихся классов
      • Модули
  6. МЕТАПРОГРАММИРОВАНИЕ
    • Языково-ориентированное программирование
    • Активные шаблоны
    • Квотирование
    • Конструирование выражений, частичное применение функции и суперкомпиляция
    • Монады
      • Монада ввода-вывода
      • Монадические свойства
      • Монада недетерминированных вычислений
    • Монадические выражения
  7. ПАРАЛЛЕЛЬНОЕ И АСИНХРОННОЕ ПРОГРАММИРОВАНИЕ
    • Асинхронные выражения и параллельное программирование
    • Асинхронное программирование
    • Асинхронно-параллельная обработка файлов
    • Агентный паттерн проектирования
    • Использование MPI
  8. РЕШЕНИЕ ТИПОВЫХ ЗАДАЧ
    • Вычислительные задачи
      • Вычисления с высокой точностью
      • Комплексный тип
      • Единицы измерения
      • Использование сторонних математических пакетов
    • Доступ к данным
      • Доступ к реляционным базам данных (SQL Server)
      • Доступ к слабоструктурированным данным XML
      • Работа с данными в Microsoft Excel
    • Веб-программирование
      • Доступ к веб-сервисам, XML-данным, RSS-потокам
      • Доступ к текстовому содержимому веб-страниц
      • Использование веб-ориентированных программных интерфейсов на примере Bing Search API
      • Реализация веб-приложений на F# для ASP.NET Web Forms
      • Реализация веб-приложений на F# для ASP.NET MVC
      • Реализация веб-приложений на F# при помощи системы WebSharper
      • Облачное программирование на F# для Windows Azure
    • Визуализация и работа с графикой
      • Двухмерная графика на основе Windows Forms API
      • Использование элемента Chart
      • 3D-визуализация с помощью DirectX и/или XNA
    • Анализ текстов и построение компиляторов
      • Реализация синтаксического разбора методом рекурсивного спуска
      • Использование fslex и fsyacc
    • Создание F#-приложений для Silverlight и Windows Phone 7