F Sharp

F Sharp
Правильный заголовок этой статьи — F#. Он показан некорректно из-за технических ограничений.
F#
Класс языка:

мультипарадигменный: функциональное, объектно-ориентированное, обобщённое, императивное программирование

Появился в:

2002

Автор(ы):

Microsoft Research

Релиз:

2.0 (12 апреля 2010)

Типизация данных:

строгая

Испытал влияние:

Objective Caml, C#, Haskell

Лицензия

Apache Software License

Сайт:

Microsoft F# Developer Center

F# (произносится эф-шарп) — это функциональный язык программирования из семейства языков .NET Framework, поддерживающий функциональное программирование в дополнение к императивному (процедурному) и объектно-ориентированному программированию. Структура F# во многом схожа со структурой OCaml с той лишь разницей, что F# реализован поверх библиотек и среды исполнения .NET. Язык был разработан Доном Саймом (англ. Don Syme) в Microsoft Research в Кембридже, в настоящее время его разработку ведет Microsoft Developer Division. F# достаточно тесно интегрируется со средой разработки Visual Studio и включён в поставку Visual Studio 2010; разработаны также компиляторы для Mac и Linux[1].

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

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

4 ноября 2010 года код компилятора F# и основных библиотек к нему опубликован под Apache License 2.0[2].

Содержание

Особенности

Код на языке F# является безопасным в отношении типов, часто бывает более компактным, чем аналогичный код C#, за счёт вывода типов.

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

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

Компилятор и интерпретатор

F# — компилируемый язык программирования, при этом в качестве промежуточного языка используется язык Common Intermediate Language (CIL), так же как и в программах, написанных на языках C# или VB.NET.

Наряду с F#-компилятором (fsc) присутствует и F#-интерпретатор (fsi), который исполняет F#-код интерактивно.

Примеры

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

type myType = IntVal of int | StringVal of string

Код также представляет собой математическую нотацию. Следующая конструкция эквивалентна f(x) = x + 1 в алгебре:

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 (имена могут быть произвольные). Таким образом кроме основной задачи образец ещё позволяет производить декомпозицию сложных структур данных.

События: — отклик вашей программы на действия пользователей, подключение устройств и тд.

VisualStudio 2010 версии 10.0.30319.1 
Framework версии 4.30319
Добавить в ссылки проекта библиотеки:
System
System.Drawing
System.Windows.Forms
В свойствах проекта выбрать тип выходных данных:
Windows-приложение

Код программы рабочий, незаконченный (может быть скопирован) (Файлы в проекте *.fs)

 // open - подключение ссылок библиотек для использования содержащихся в них:
 // слов-функций - к примеру '''open''', '''len''' и тд;
 // списков - к примеру Keys и тд;
 // значений - к примеру Keys.A=65 Keys.B=66 и тд; и тд.
 open System // - 
 open System.Drawing // - обработка отрисовки окон, слова-фунции методов рисования и тд.
 open System.Windows.Forms // - слова-фунции Form (окно), Button (кнопка)и тд.
 // let - 
 // evArgs - 
 // Beep - звуковой сигнал
 // окно_изменение_размеров - слово-функция, действие Beep
 let окно_изменение_размеров evArgs = System.Console.Beep( )
 let окно_нажатие_клавиш evArgs = System.Console.Beep( )
 let окно_удержание_клавиш evArgs = System.Console.Beep( )
 let окно_отжатие_клавиш evArgs = System.Console.Beep( )
 // создание окна с програмным именем окно !необходимо вызывать слово-функцию отображения - к примеру Application.Run(окно)!
 // Visible - видимость (true-false)
 // TopMost - окно на передний план в программе(true-false) (очерёдность окон с одинаковым значением в обратном порядке вызова)
 // Text - текст заголовка
 let окно = new System.Windows.Forms.Form(Visible=true,TopMost=true,Text="") 
 окно.Top<-0 // Верхний край окна=0
 окно.Left<-0 // Левый край окна=0
 окно.Height<-512 // Высота окна=512
 окно.Width<-768 // Ширина окна=768
 окно.WindowState<-FormWindowState.Normal // Нормальное (,Свёрнутое ,Развёрнутое) окно
 окно.ClientSizeChanged.Add(окно_изменение_размеров)
 окно.KeyDown.Add(окно_нажатие_клавиш)
 окно.KeyPress.Add(окно_удержание_клавиш)
 окно.KeyUp.Add(окно_отжатие_клавиш)
 Application.Run(окно) // отображение окна

Примечания

См. также

Ссылки

Литература

  • Крис Смит (Smith, Chris) Программирование на F# = Programming F#. — O'Reilly, 2009.
  • Дмитрий Сошников Функциональное программирование на F#. — Москва: ДМК Пресс, 2011. — С. 192. — ISBN 978-5-94074-689-8
  • Syme, Don; Granicz, Adam; Cisternino, Antonio Expert F#. — Apress, 2007. (англ.)

Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "F Sharp" в других словарях:

  • Sharp (surname) — Sharp is a surname. Sharp is cognate to the German dd. scharf . It is also akin to words which have the sense of scraping, e.g. Latin la. scrobis ditch , Russian ru. skresti to scrape .* Abraham Sharp (1651 1742), English schoolmaster,… …   Wikipedia

  • Sharp — Sharp, a. [Compar. {Sharper}; superl. {Sharpest}.] [OE. sharp, scharp, scarp, AS. scearp; akin to OS. skarp, LG. scharp, D. scherp, G. scharf, Dan. & Sw. skarp, Icel. skarpr. Cf. {Escarp}, {Scrape}, {Scorpion}.] 1. Having a very thin edge or fine …   The Collaborative International Dictionary of English

  • Sharp practice — Sharp Sharp, a. [Compar. {Sharper}; superl. {Sharpest}.] [OE. sharp, scharp, scarp, AS. scearp; akin to OS. skarp, LG. scharp, D. scherp, G. scharf, Dan. & Sw. skarp, Icel. skarpr. Cf. {Escarp}, {Scrape}, {Scorpion}.] 1. Having a very thin edge… …   The Collaborative International Dictionary of English

  • Sharp — K.K Rechtsform Kabushiki kaisha ISIN JP3359600008[1] Gründung …   Deutsch Wikipedia

  • Sharp Corporation — シャープ株式会社 Lema Be Sharp, From Sharp Minds Come Sharp Products Tipo Pública (TYO …   Wikipedia Español

  • Sharp Corporation — シャープ株式会社 Тип Публичная компания Листинг на бирже TYO …   Википедия

  • SHARP —  Pour l’article homophone, voir Sharpe. Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • sharp — [ʆɑːp ǁ ʆɑːrp] adjective a sharp increase, fall etc is very sudden and very big: • a sharp rise in interest rates • Unemployment generally brings a sharp fall in income. • The group reported a sharp decline in full year profits. sharply adverb …   Financial and business terms

  • sharp — [shärp] adj. [ME < OE scearp, akin to Ger scharf, ON skarpr < IE * (s)kerb(h) < base * (s)ker , to cut > SHEAR, HARVEST, L caro, flesh] 1. suitable for use in cutting or piercing; having a very thin edge or fine point; keen 2. having… …   English World dictionary

  • Sharp Nemesis NXT — at Mojave Role Racing aircraft Manufa …   Wikipedia

  • sharp — sharp, keen, acute can all mean having a fine point or edge, but it is in several of their extended senses that they are most likely to come into comparison. As applied to persons or their qualities, especially of intellect, all three can… …   New Dictionary of Synonyms


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»