Язык программирования F#

Hes 2014 M12 11
434
1
2
0

F# — это мультипарадигменный язык программирования, разработанный в подразделении Microsoft Research и предназначенный для исполнения на...

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, что само по себе здорово.

Типичный хелловорлд:

 
  1. let message = "Hello world!"
  2. printfn "%s" message

Пример посложнее. Пусть стоит задача вычисления чётных чисел от 0 до 10:

 
  1. let numbers = [ 1 .. 10 ] // List в C#
  2. let isOdd(n) = (n%2 = 1) // Функция определения чётности
  3. let square(n) = n * n // Функция определения квадрата числа
  4. //Ищем квадрат чётного числа в списке
  5. let squared =
  6. numbers
  7. |> List.filter isOdd
  8. |> List.map square
  9. //
  10. val it : int list = [1; 9; 25; 49; 81]

List.filter - предложение where в Linq

List.map - предложение select в Linq

Императивный стиль в F#

 
  1. let mutable sum = 0
  2. for i in [0..100] do
  3. if i%2 <> 0 then sum <- sum + i
  4. printf "the sum of odd numbers from 0 to 100 is %d \n" sum

Эти примеры лишь малая часть того, что представляет собой F#.

Оцените пост

-7

Комментарии

-8
Еще понравился паттерн мэтчинг или сопоставление с образцом в F#:
let print x =
match x with
| IntVal i -> System.Console.WriteLine(“Integer: {0}”, box i)
| StringVal s -> System.Console.WriteLine(“String: {0}”, s)

switch..case гораздо слабее по сравнению с паттерн мэтчингом.
Примеры тут: msdn.microsoft.com
Показать комментарии