F Sharp

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

F# — это функциональный язык программирования общего назначения. Разработан Доном Саймом (англ. Don Syme) в Microsoft Research в Кембридже. Структура F# во многом схожа со структурой OCaml с той лишь разницей, что F# реализован поверх библиотек и среды исполнения .NET.

Некоторые задачи решаются значительно проще и яснее с использованием F# (по сравнению с решениями на господствующих ОО-языках), особенно те, что используют математический стиль программирования. Например, написание компилятора требует работы со структурами данных и преобразованиями над ними.

Microsoft интегрировала среду разработки F# в Visual Studio 2010. Microsoft планирует активно внедрять данный язык в разработку программных систем, которые сами с течением времени смогут масштабироваться, например в зависимости от количества пользователей, данное достоинство нельзя просто реализовать в императивных языках программирования.

Особенности

Код на языке F# является безопасным в отношении типов, часто бывает более компактным, чем аналогичный код C#, за счёт выведения типов. Такие возможности, как обобщенное программирование и функции позволяют писать абстрактные обобщенные алгоритмы, которые управляют параметризованными структурами данных (например, массивами, списками, графами, деревьями).

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

Примеры

Синтаксис F# построен на математической нотации, а программирование чем-то похоже на алгебру. Например, когда вы определяете новый тип, то можете указать, что переменными этого типа будут «целые или строки». Вот как это выглядит:

type myType = IntVal of int | StringVal of string

Код также представляет собой математическую нотацию.

let f x = x + 1

F# работает следующим образом: тип «f» представляет собой «int -> int», то есть функция получает на вход целое и выдаёт на выход целое. F# позволяет получить доступ абсолютно ко всему, что есть в FCL. Синтаксис для работы с библиотеками .NET в этом смысле максимально близок к синтаксису C#. Особенности языка заметны при использовании всего спектра возможностей F#. К примеру, следующий код применяет функцию к элементам списка:

let rec map func lst =
    match lst with
       | [] -> []
       | head :: tail -> func head :: map func tail
 
let myList = [1;3;5]
let newList = map (fun x -> x + 1) myList

В «newList» теперь находится «[2;4;6]».

Разбор списка в этой функции ведётся с помощью ещё одной мощной возможности сопоставления с образцом. Она позволяет задавать образцы при совпадении с которыми вычисляются соответствующие вхождения оператора match. Первый образец "[]" означает пустой список. Второй - список состоящий из первого элемента и хвоста (который может быть произвольным списком, в том числе и пустым). Во втором образце значение головы связывается с переменной head, а хвоста с tail (имена могут быть произвольные). Таким образом кроме основной задачи образец ещё позволяет производить декомпозицию сложных структур данных.

Примечания

См. также

Ссылки

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....