F# — это мультипарадигменный язык программирования, разработанный в подразделении Microsoft Research и предназначенный для исполнения на платформе Microsoft .NET. Он сочетает в себе выразительность функциональных языков, таких как OCaml и Haskell с возможностями и объектной моделью .NET.
Год назад F# в рейтинге Tiobe занимал 69 строчку в рейтинге популярности, сейчас же - 19 место. По прогнозам Tiobe, F# будет уверенно входить в 10 самых популярных языков в мире.
Забрать F# можно отсюда для Windows, отсюда для Linux, отсюда для Android и отсюда для Mac.
Все функциональные возможности F# реализованы в конечном итоге поверх общей системы типов .NET Framework. Однако этот факт не обеспечивает удобства использования таких конструкций из других языков платформы. При разработке собственных библиотек на F# следует предусмотреть создание объектно-ориентированных обёрток, которые будет проще использовать из C# или Visual Basic .NET.
С обучением и литературой, всё очень даже хорошо, к примеру проект Try F#, WikiBooks. Из книг: Tomas Petricek with Jon Skeet. Real-World Functional Programming. Часть книги есть на MSDN. Вторая книга: Tao Liu. F# for C# Developers. Обе эти книги очень хорошо подходят разработчикам, пишущим на C#. Есть еще очень интересная книга другого автора: Johan Astborg. F# for Quantitative Finance, к ней также прилагаются исходные коды на GitHub, что само по себе здорово.
Типичный хелловорлд:
-
let message = "Hello world!"
-
printfn "%s" message
Пример посложнее. Пусть стоит задача вычисления чётных чисел от 0 до 10:
-
let numbers = [ 1 .. 10 ] // List в C#
-
let isOdd(n) = (n%2 = 1) // Функция определения чётности
-
let square(n) = n * n // Функция определения квадрата числа
-
//Ищем квадрат чётного числа в списке
-
let squared =
-
numbers
-
//
List.filter - предложение where в Linq
List.map - предложение select в Linq
Императивный стиль в F#
-
let mutable sum = 0
-
for i in [0..100] do
-
if i%2 <> 0 then sum <- sum + i
-
printf "the sum of odd numbers from 0 to 100 is %d \n" sum
Эти примеры лишь малая часть того, что представляет собой F#.