Введение в программирование на F#

Самое основное в функциональном программировании - это функции. Определение функции выглядит очень красиво и компактно, равно как и применение функции к аргументу:


In [2]:
let twice x = x*2
twice 5


Out[2]:
10

Для многократного применения функции можно воспользоваться операцией композиции >>, или оператором |> для подачи входного значения в функцию. Все приведенные ниже выражения эквивалентны.


In [3]:
twice(twice 5)
(twice >> twice)5
(twice << twice)5
5 |> twice |> twice
twice <| 5 |> twice


Out[3]:
20

В качестве примера более сложной функции рассмотрим функцию решения квадратного уравнения. Обратите внимание - она возвращает пару значений (корни). Также используется вложенный let для дискриминанта.


In [4]:
let solve a b c = 
   let d = b*b-4.*a*c
   let x1 = (-b-sqrt(d))/2./a
   let x2 = (-b+sqrt(d))/2./a
   (x1,x2)
   
solve 1. 2. -3.


Out[4]:
(-3.0, 1.0)

Задание: попробуйте добавить новый вычислимый блок и посмотреть, что будет, если попробовать решить уравнение, не имеющее действительных корней.


In [7]:
solve 1. 0. 1.


Out[7]:
(nan, nan)