Search
Write a publication
Pull to refresh

.NET

Что надо знать, что правильно использовать F#.


Хотелось немного рассказать об особенностях программирования на F#. Как вы, наверное, читали – это язык функционального семейства и произошел он семейства ML и OCaml. Когда я увидел F# в первый раз и решил им воспользоваться, то был достаточно смущен странным синтаксисом, по сравнению с обычными императивными языками, Visual Studio постоянно ругалась чуть ли не на каждую строку кода. Поэтому хотелось рассказать о том, как «правильно» пользоваться этим языком.

Далее я привожу некоторые свои изыскания, при использовании F#:

1. Пишите код с использование директивы #light — это позволит избежать ненужных синтаксических конструкций, котороые достались в наследство от OCaml.

2. Язык F# чувствителен к способу отступов в коде (чем-то это похоже на питон), если вы используете символы табуляции вместо пробелов, то необходимо поменять их на пробелы.
Пример:
//Все правильно
[]
let main(args) =
Console.ReadKey() |> ignore
(0)

//Ошибка компиляции - нет отступов
[]
let main(args)=
Console.ReadKey() |> ignore
(0)


3. В F# не классического понятия переменной, поэтому операция присваивания "=" отсутствует, а есть оператор связывания let, после которого измениние объекто по-умалчанию запрещено (read-only). Пример:
#light

open System

let a = 5

a = 5 //Это обыкновенное сравнение двух чисел на равенство,
//а не присвоение (как может показаться)
//let a = 5 //Была бы ошибка компиляции - a уже определена выше

Console.WriteLine a
Console.ReadKey true

В консли будет 5.

4. При необходимости не только read-only "переменных", можно воспользоваться модификатором mutable. Пример:
#light
open System

let mutable x: int = 0
let mutable y: int = 0

x <- int(Console.ReadLine())
y <- int(Console.ReadLine())

Console.WriteLine(x + y)
Console.ReadKey true


Запись let mutable x: int = 0 – объявление mutable переменной x (необходимо начальное значение x, в данном случае 0) .
Запись x <- int(Console.ReadLine()) – присвоение переменной целочисленного типа, вводимого с консоли.

5. Второй способ использовать не read-only "переменные" - использовать ссылочный тип ref. Пример использования ref типов:
#light

open System

let a = ref 0
a := 10

Console.WriteLine !a
Console.ReadKey true


На консоль выводится число 10.

Запись let a = ref 0 – объявление (связывание) переменной, которая ссылается на целочисленный тип. стоит отметить, что в F# всегда требуется инициализировать ссылочный(ref) тип каким-либо значение уже при объявлении.
Запись a := 10 – обозначает присвоение ссылочной переменной а значения 10.
Console.WriteLine !a – вывод на консоль содержимого перенной a. Оператор ! – оператор извлечения значения ссылочной переменной.
Использование ref типа в F# сильно похоже на использование указателей в C.

Заключение

Надеюсь, что бы полезен тем, кто решил познакомиться с новым языком F#. Удачного всем программирования.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.