Программирование на F#

Исчерпывающее руководство.

Смит К. «Программирование на F#» Символ-Плюс, 2011 год, 448 стр., O’reilly, ISBN 978-5-93286-199-8; (4,13 мб. pdf)

F# – это мультипарадигмальный язык программирования из семейства языков .NET Framework, который помогает повысить производительность труда за счет использования функционального стиля разработки и позволяет применять при создании приложений навыки объектно-ориентированного и императивного программирования. Книга «Программирование на F#» поможет открыть множество преимуществ этого языка, включая возможность доступа ко всем замечательным инструментам и библиотекам платформы .NET.

Это исчерпывающее руководство, написанное Крисом Смитом, одним из основных разработчиков F# компании Microsoft, знакомит с синтаксисом языка, реализацией асинхронных и параллельных вычислений, с расширенными концепциями языка F#, такими как цитируемые и вычислительные выражения. От читателя не требуется знание конкретных технологий, хотя общий опыт программирования, безусловно, желателен. Единственное требование – это желание воспользоваться преимуществами функционального программирования при разработке своих проектов, будь то реализация численных алгоритмов, анализ данных или сценарии для личного использования. В этом случае издание послужит хорошей отправной точкой на пути изучения фундаментальных и расширенных концепций языка F#.
ISBN 978-0-596-15364-9 (англ)

оглавление книги

Часть I. Мультипарадигменное программирование 23

Глава 1. Введение в F# 25
Знакомство с F# 25
Visual Studio 2010 26
Ваша вторая программа на F# 27
Значения 28
Пробельные символы имеют значение 29
.NET Interop 30
Комментарии 31
F# Interactive 31
Управление файлами с исходными кодами F# 34

Глава 2. Основы 36
Элементарные типы 36
Элементарные числовые типы 37
Арифметика 39
Функции преобразования 40
Тип bigint 41
Битовые операции 42
Символы 42
Строки 43
Булевы значения 45
Сравнивание и равенство 46
Функции 46
Вывод типов 47
Обобщенные функции 49
Область видимости 50
Управление потоком выполнения 52
Основные типы 55
Тип unit 55
Кортежи 56
Списки 58
Агрегатные операторы 63
Тип option 67
Функция printfn 68
Строение программы на языке F# 71
Модули 71
Пространства имен 72
Запуск программы 73

Глава 3. Функциональное программирование 75
Программирование с помощью функций 76
Неизменяемость 77
Функции как значения 78
Рекурсивные функции 82
Символьные операторы 85
Композиция функций 86
Сопоставление с образцом 93
Отсутствие совпадений 94
Именованные образцы 95
Сопоставление с литералами 96
Ограничение when 97
Группировка образцов 98
Сопоставление структур данных 99
За пределами выражений сопоставления 100
Альтернативный синтаксис лямбда-выражений 101
Размеченные объединения 102
Использование размеченных объединений для создания древовидных структур 104
Сопоставление с образцом 105
Методы и свойства 107
Записи 108
Клонирование записей 109
Сопоставление с образцом 109
Вывод типов 110
Методы и свойства 111
Отложенные вычисления 111
Типы Lazy 112
Последовательности 112
Выражения последовательности 114
Функции модуля Seq 115
Агрегатные операторы 116

Глава 4. Императивное программирование 118
Понятие памяти в .NET 119
Значимые типы и ссылочные типы 120
Значения по умолчанию 120
Совмещение имен ссылочных типов 123
Изменение значений 123
Ссылочные ячейки 125
Изменяемые записи 126
Массивы 127
Обращение к элементам массива 128
Срезы массивов 130
Создание массивов 131
Сопоставление с образцом 132
Эквивалентность массивов 132
Функции модуля Array 133
Многомерные массивы 135
Типы изменяемых коллекций 136
List<’T> 136
Dictionary<’K,’V> 138
HashSet<’T> 140
Циклы 141
Циклы while 141
Циклы for 142
Исключения 144
Обработка исключений 145
Повторная генерация исключений 148
Определение новых типов исключений 148

Глава 5. Объектно-ориентированное программирование 151
Программирование с применением объектов 151
Преимущества ООП 152
Недостатки ООП 152
System.Object 153
Общие методы 153
Эквивалентность объектов 155
Сгенерированная эквивалентность 157
Классы 159
Явное создание 160
Неявное создание классов 162
Обобщенные классы 163
Собственный идентификатор 165
Методы и свойства 165
Свойства 166
Установка значений свойств в конструкторе 167
Методы 167
Статические методы, свойства и поля 169
Перегрузка методов 171
Модификаторы доступа 172
Наследование 175
Переопределение методов 177
Категории классов 178
Приведение типов 181

Глава 6. Программирование на платформе .NET 185
Платформа .NET 185
CLI 185
Сборка мусора 186
Интерфейсы 189
Использование интерфейсов 190
Определение интерфейсов 191
Объектные выражения 193
Реализация интерфейсов
с помощью объектных выражений 193
Создание производных классов с помощью объектных выражений 195
Методы расширения 196
Расширение модулей 197
Перечисления 198
Создание перечислений 198
Преобразование 199
Когда использовать перечисления, а когда размеченные объединения 200
Структуры 201
Создание структур 202
Ограничения 204
Когда использовать структуры, а когда записи 204

Глава 7. Прикладное функциональное программирование 206
Единицы измерения 207
Определение единиц измерения 209
Преобразование единиц измерения 210
Обобщенные единицы измерения 211
Активные шаблоны 212
Одновариантные активные шаблоны 214
Частичные активные шаблоны 215
Параметризованные активные шаблоны 216
Многовариантные активные шаблоны 218
Использование активных шаблонов 219
Использование модулей 223
Преобразование модулей в классы 223
Намеренное сокрытие 227
Управление порядком использования модулей 228
Работа со списками 230
Операции над списками 230
Использование списков 232
Хвостовая рекурсия 233
Стек 235
Введение в хвостовую рекурсию 236
Шаблоны хвостовой рекурсии 239
Программирование с применением функций 243
Карринг 243
Избавление от избыточного кода 244
Замыкания 245
Функциональные шаблоны проектирования 247
Мемоизация 248
Функции как изменяемые значения 250
Отложенные вычисления 252

Глава 8. Прикладное объектно-ориентированное программирование 254
Операторы 254
Перегрузка операторов 254
Индексаторы 256
Добавление срезов 259
Ограничения обобщенных типов 261
Делегаты и события 264
Определение делегатов 266
Объединение делегатов 267
События 268
Создание событий 268
Класс Event<_,_> 271
Модуль Observable 272
Создание событий .NET 276

Часть II. Программирование на языке F# 279

Глава 9. Сценарии 281
Файлы сценариев на языке F# 282
Директивы 283
Общие директивы 283
Директивы сценариев 284
Рецепты по созданию сценариев 286
Выделение цветом 286
Воспроизведение звука 287
Обход дерева каталогов 288
Простой запуск процессов 289
Автоматизация операций в Microsoft Office 290

Глава 10. Вычислительные выражения 293
На пути к вычислительным выражениям 293
Построители вычислительных выражений 297
Собственные построители вычислительных выражений 301
Асинхронные вычислительные выражения 301
Вычислительное выражение округления 302
Вычислительное выражение, сохраняющее состояние 303

Глава 11. Асинхронное и параллельное программирование 310
Работа с потоками 311
Запуск потоков 312
Пул потоков .NET 314
Разделяемые данные 315
Асинхронное программирование 319
Асинхронные вычислительные выражения 322
Библиотека Async 323
Асинхронные операции 329
Создание собственных асинхронных примитивов 330
Ограничения 331
Параллельное программирование 332
Parallel.For 333
Модуль Array.Parallel 334
Библиотека PFX 334
Примитивы 336
Параллельные структуры данных 341

Глава 12. Рефлексия 345
Атрибуты 345
Применение атрибутов 347
Определение новых атрибутов 348
Рефлексия типов 349
Получение информации о типе 350
Рефлексия типов языка F# 354
Динамическое создание экземпляров 356
Создание экземпляров 357
Создание экземпляров типов языка F# 357
Динамический вызов 358
Оператор «знак вопроса» 359
Использование рефлексии 361
Декларативное программирование 361
Расширяемая архитектура 365

Глава 13. Цитирование 370
Основы цитирования 371
Декомпозиция цитируемых выражений 372
Цитирование тела метода 375
Декомпозиция произвольного кода 377
Практическое применение: перенос вычислений на другие платформы 379
Создание цитируемых выражений 381
Подстановка выражений 382
Выполнение цитируемых выражений 382
Практическое применение: создание производных 384
Приложение A. Обзор библиотек .NET 388
Визуализация 388
Windows Forms 389
Windows Presentation Foundation 391
Обработка данных 398
Регулярные выражения 399
Работа с XML 406
Сохранение данных 410
Файлы 410
Сериализация данных 411
Десериализация 414
Стандартная библиотека языка F# 415
FSharp.Core.dll 415
F# PowerPack 418
Приложение B. Взаимодействие программ на F# с кодом на других языках .NET 421
Взаимодействие с другими языками .NET 422
Использование кода F# в программах на языке C# 422
Использование кода C# в программах на языке F# 427
Взаимодействие с неуправляемым кодом 431
Platform Invoke 431
COM 433

СкачатьPDF

Похожая литература