Справочник по языку F#

Эта статья представляет собой справочник по языку программирования F#, который поддерживает несколько парадигм и предназначен для платформы .NET. Язык F# поддерживает функциональные, объектно-ориентированные и императивные модели программирования.

Справочник по API библиотеки F# Core

Справочник по API библиотеки F# Core (FSharp.Core) содержит справочные материалы по всем пространствам имен, модулям, типам и функциям библиотеки F# Core.

Токены F#

Следующая таблица содержит справочные статьи, где приведены таблицы ключевых слов, символов и литералов, используемых в F# в качестве токенов.

Название Описание:
Справочные сведения о ключевых словах Содержит ссылки на сведения обо всех ключевых словах языка F#.
Справочник символов и операторов Содержит таблицу символов и операторов, которые используются в языке F#.
Литералы Описывает синтаксис для литеральных значений в F# и способы указания сведений о типах для литералов F#.

Основные понятия языка F#

Следующая таблица содержит статьи, где описаны основные понятия языка.

Название Описание:
Функции Функции являются основным элементом выполнения программы на любом языке программирования. Как и в других языках, функция F# имеет имя, может иметь параметры и принимать аргументы, а также имеет тело. F# также поддерживает конструкции функционального программирования, например, обработку функций как значений, использование неименованных функций в выражениях, объединение функций для образования новых функций, каррированные функции и неявное определение функций посредством частичного применения аргументов функции.
Типы языка F# Описывает типы, которые используются в F#, а также способы их именования и описания.
Вывод типа Описывает, как компилятор F# определяет типы значений, переменных, параметров и возвращаемых значений.
Автоматическое обобщение Описывает универсальные конструкции в F#.
Наследование Описывает наследование, которое применяется для моделирования отношения "is-a" — подтипирования — в объектно-ориентированном программировании.
Члены Описывает элементы типов объектов F#.
Параметры и аргументы Описывает языковую поддержку для определения параметров и передачи аргументов в функции, методы и свойства. Содержит сведения о передаче по ссылке.
Перегрузка операторов Описывает перегрузку арифметических операторов в классе или типе записи, а также на глобальном уровне.
Приведение и преобразование Описывает поддержку для преобразований типов в F#.
Управление доступом Описывает управление доступом в F#. Управление доступом означает объявление того, какие именно клиенты могут использовать определенные элементы программы, например типы, методы, функции и т. д.
Соответствие шаблону Описывает шаблоны, которые являются правилами для преобразования входных данных и используются во всем языке F#. Пользователь может сравнить данные с шаблоном, разбить данные на составляющие части или извлечь сведения из данных теми или иными способами.
Активные шаблоны Описывает активные шаблоны. Активные шаблоны позволяют определять именованные разделы, на которые подразделяются входные данные. Активные шаблоны можно использовать для разложения данных в настраиваемом порядке для каждого раздела.
Проверочные утверждения Описывает выражение assert, являющееся функцией отладки, которую можно использовать для тестирования выражения. При сбое в режиме отладки утверждение создает диалоговое окно системной ошибки.
Обработка исключений Содержит сведения о поддержке обработки исключений в языке F#.
attributes Описывает атрибуты, позволяющие применять метаданные к программным конструкциям.
Управление ресурсами: ключевое слово use Описывает ключевые слова use и using, позволяющие управлять инициализацией и освобождением ресурсов.
namespaces Описывает поддержку пространств имен в F#. С помощью пространства имен вы можете упорядочить код по областям соответствующей функциональности, подключив имя к группированию элементов программы.
Модули Описывает модули. Модуль F# — это группирование кода F#, например значений, типов и значений функций, в программе F#. Код группирования в модулях объединяет связанный код и помогает избежать конфликтов имен в программе.
Объявления импорта: ключевое слово open Описывает работу open. Объявление импорта указывает модуль или пространство имен, на элементы которого можно ссылаться без использования полного имени.
Сигнатуры Описывает сигнатуры и их файлы. В файле сигнатур содержатся сведения об открытых сигнатурах набора элементов программы на языке F#, таких как типы, пространства имен и модули. Файл сигнатур можно использовать для указания доступности этих элементов программы.
Документация XML Описывает создание файлов документации для комментариев к XML-документам. Документацию можно создавать из комментариев к коду в F#, так же как и в других языках .NET.
Подробный синтаксис Описывает синтаксис для конструкций F#, когда упрощенный синтаксис отключен. Подробный синтаксис указывается директивой #light "off" в верхней части файла кода.
Форматирование обычного текста Узнайте, как использовать sprintf и другое форматирование обычного текста в приложениях и сценариях F#.

Типы языка F#

Следующая таблица содержит статьи, где описаны типы, поддерживаемые языком F#.

Название Описание:
Значения Описывает значения, которые являются величинами, имеющими конкретный тип. Значения могут быть целыми числами или числами с плавающей запятой, символами или текстом, списками, последовательностями, массивами, кортежами, размеченными объединениями, записями, типами классов или значениями функции.
Базовые типы Описывает фундаментальные базовые типы, используемые в языке F#. Кроме того, указывает соответствующие типы .NET и минимальное и максимальное значения для каждого из них.
Тип Unit Описывает тип unit, который указывает на отсутствие конкретного значения. Тип unit имеет только одно значение, которое выступает в качестве заполнителя, если другое значение не существует или не требуется.
Строки Описывает строки в F#. Тип string представляет неизменяемый текст в виде последовательности символов Юникода. string — это псевдоним для System.String в .NET Framework.
Кортежи Описывает кортежи, представляющие собой группирования неименованных, но упорядоченных значений, которые могут иметь разные типы.
Типы коллекций F# Обзор типов функциональных коллекций F#, включая типы для массивов, списков, последовательностей (seq), карт и наборов.
Списки Описывает списки. В языке F# список — это упорядоченная, неизменная серия элементов одного типа.
Параметры Описывает тип параметра. Параметр в F# используется, когда значение может как существовать, так и не существовать. Параметр имеет базовый тип и может содержать значение этого типа либо не содержать никакого значения.
Последовательности Описывает последовательности. Последовательность — это логический ряд элементов одного типа. Отдельные элементы последовательности вычисляются только при необходимости, поэтому представление может быть меньше указанного количества элементов литерала.
Массивы Описывает массивы. Массивы — это изменяемые последовательности элементов данных одного типа, имеющие фиксированный размер и индексируемые с нуля.
Записи Описывает записи. Записи представляют собой простые агрегаты именованных значений, которые могут иметь элементы.
Размеченные объединения Описывает размеченные объединения, обеспечивающие поддержку значений, которые могут представлять один из множества именованных вариантов, каждый из которых может иметь разные значения и типы.
Перечисления Описывает перечисления, которые являются типами, имеющими определенный набор именованных значений. Их можно использовать вместо литералов, чтобы сделать код более понятным и простым в обслуживании.
Ссылочные ячейки Описывает ссылочные ячейки, представляющие собой места хранения, которые позволяют создавать изменяющиеся переменные с семантикой ссылок.
Сокращенные обозначения типов Описывает сокращенные формы типов, которые являются альтернативными именами типов.
Классы Описывает классы, которые являются типами, представляющими объекты, которые могут иметь свойства, методы и события.
Структуры Описывает структуры, представляющие собой компактный тип объекта, который может быть более эффективным, чем класс для типов, имеющих небольшое количество данных и простое поведение.
Интерфейсы Описывает интерфейсы, которые определяют наборы связанных элементов, реализуемых другими классами.
Абстрактные классы Описывает абстрактные классы, которые оставляют некоторые или все элементы нереализованными, чтобы реализации могли предоставляться производными классами.
Расширения типов Описывает расширения типов, которые позволяют добавлять новые элементы в ранее определенный тип объекта.
Гибкие типы Описывает гибкие типы. Заметка с гибким типом указывает на то, что параметр, переменная или значение имеют тип, который совместим с указанным типом, где совместимость определяется положением в объектно ориентированной иерархии классов или интерфейсов.
Делегаты Описывает делегаты, которые представляют вызов функции в качестве объекта.
Единицы измерения Описывает единицы измерения. Значения с плавающей запятой в языке F# могут иметь связанные единицы измерения, которые обычно используются для указания длины, объема, массы и т. д.
Поставщики типов Описывает поставщики типов и предоставляет ссылки на пошаговые инструкции по использованию встроенных поставщиков типов для доступа к базам данных и веб-службам.

Выражения F#

Следующая таблица содержит список статей, описывающих выражения F#.

Название Описание:
Условные выражения: if...then...else Описывает выражение if...then...else, которое выполняет различные ветви кода, а также дает разные значения при вычислении в зависимости от заданного логического выражения.
Выражения match Описывает выражение match, которое позволяет управлять ветвлением за счет сравнения выражения с набором шаблонов.
Циклы: выражение for...to Описывает выражение for...to, которое используется для циклической итерации по диапазону значений переменной цикла.
Циклы: выражение for...in Описывает выражение for...in — циклическую конструкцию, которая используется для итерации по совпадениям с шаблоном в перечислимой коллекции, такой как выражение диапазона, последовательность, список, массив или другая конструкция, поддерживающая перечисление.
Циклы: выражение while...do Описывает выражение while...do, используемое для итеративного выполнения (выполнения в цикле), пока заданное условие теста истинно.
Выражения объекта Описывает выражения объектов, формирующие новые экземпляры динамически создаваемого анонимного типа объекта, который основан на существующем базовом типе, интерфейсе или наборе интерфейсов.
Отложенные выражения Описывает отложенные выражения, которые выполняются не сразу, а только тогда, когда возникает потребность в результате.
Выражения вычисления Описывает выражения вычисления в F#, обеспечивающие удобный синтаксис для записи вычислений, которые можно упорядочивать и комбинировать с помощью привязок и конструкций потока управления. Они позволяют предоставить удобный синтаксис для компонентов функционального программирования monad, которые можно использовать для управления данными и побочными эффектами в функциональных программах. Один из типов выражений вычисления — асинхронный рабочий процесс — обеспечивает поддержку асинхронных и параллельных вычислений. Дополнительные сведения см. в статье Асинхронные рабочие потоки.
Асинхронные рабочие потоки Описывает асинхронные рабочие процессы — функцию языка, позволяющую писать асинхронный код практически аналогично синхронному.
Цитирование кода Описывает цитирование кода — функцию языка, позволяющую программно создавать выражения кода F# и работать с ними.
Выражения запросов Описывает выражения запросов — функцию языка, которая реализует LINQ для F# и позволяет составлять запросы к источнику данных или перечислимой коллекции.

Конструкции, поддерживаемые компилятором

Следующая таблица содержит список статей, где описаны специальные конструкции, поддерживаемые компилятором.

Раздел Описание
Параметры компилятора Описывает параметры командной строки для компилятора F#.
Директивы компилятора Описывает директивы процессора и компилятора.
Идентификаторы Source Line, File и Path Описывает идентификаторы __LINE__, __SOURCE_DIRECTORY__ и __SOURCE_FILE__, представляющие собой встроенные значения, которые позволяют получить доступ к номеру исходной строки, каталогу и имени файла в коде.