Оглавление
- ВВЕДЕНИЕ
- Зачем изучать функциональное программирование
- О чем и для кого эта книга
- Как установить и начать использовать F#
- ОСНОВЫ ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ
- Применение функций vs. присваивание
- Упорядоченные кортежи, списки и вывод типов
- Функциональные типы и описание функций
- Каррирование
- Условный оператор и опциональный тип
- Типы данных, размеченное объединение и сопоставление с образцом
- Рекурсия, функции-параметры и цикл for
- Конструкции >>, |>
- Пример – построение множества Мандельброта
- Интероперабельность с .NET
- РЕКУРСИВНЫЕ СТРУКТУРЫ ДАННЫХ
- Списки и конструкторы списков
- Сопоставление с образцом
- Простейшие функции обработки списков
- Функции высших порядков
- Отображение
- Фильтрация
- Свёртка
- Другие функции высших порядков
- Генераторы списков
- Хвостовая рекурсия
- Сложностные особенности работы со списками
- Массивы
- Многомерные массивы и матрицы
- Списки списков, или непрямоугольные массивы (Jugged Arrays)
- Многомерные массивы .NET
- Специализированные типы для матриц и векторов
- Разреженные матрицы
- Использование сторонних математических пакетов
- Деревья общего вида
- Двоичные деревья
- Определение
- Обход двоичных деревьев
- Деревья поиска
- Деревья выражений и абстрактные синтаксические деревья (AST)
- Другие структуры данных
- Множества (Set)
- Отображения (Map)
- Хеш-таблицы
- ТИПОВЫЕ ПРИЁМЫ ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ
- Замыкания
- Динамическое связывание и mutable-переменные
- Генераторы и ссылочные переменные ref
- Ленивые последовательности (seq)
- Построение частотного словаря текстового файла
- Вычисление числа Пи методом Монте-Карло
- Ленивые и энергичные вычисления
- Мемоизация
- Продолжения
- ИМПЕРАТИВНЫЕ И ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ВОЗМОЖНОСТИ F#
- Мультипарадигмальность языка F#
- Элементы императивного программирования на F#
- Использование изменяемых переменных и ссылок
- Цикл с предусловием
- Условный оператор
- Null-значения
- Обработка исключительных ситуаций
- Объектно-ориентированное программирование на F#
- Записи
- Моделирование объектной ориентированности через записи и замыкания
- Методы
- Интерфейсы
- Создание классов с помощью делегирования
- Создание иерархии классов
- Расширение функциональности имеющихся классов
- Модули
- МЕТАПРОГРАММИРОВАНИЕ
- Языково-ориентированное программирование
- Активные шаблоны
- Квотирование
- Конструирование выражений, частичное применение функции и суперкомпиляция
- Монады
- Монада ввода-вывода
- Монадические свойства
- Монада недетерминированных вычислений
- Монадические выражения
- ПАРАЛЛЕЛЬНОЕ И АСИНХРОННОЕ ПРОГРАММИРОВАНИЕ
- Асинхронные выражения и параллельное программирование
- Асинхронное программирование
- Асинхронно-параллельная обработка файлов
- Агентный паттерн проектирования
- Использование MPI
- РЕШЕНИЕ ТИПОВЫХ ЗАДАЧ
- Вычислительные задачи
- Вычисления с высокой точностью
- Комплексный тип
- Единицы измерения
- Использование сторонних математических пакетов
- Доступ к данным
- Доступ к реляционным базам данных (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
|
|