Оператор type и определение псевдонима

Последнее обновление: 10.12.2023

Язык F# позволяет определять псевдонимы для типов. Для применяется оператор type. Он имеет следующий формальный синтаксис:

type название_псевдонима = определение_псевдонима

После ключевого слова type идет название псевдонима. А после знака равно собственно определение нового псевдонима.

Вначале рассмотрим ситуацию, где мы могли бы это применить:

let action x y (func: float ->float-> float) = func x y
 
let result1 = action 10.0 6.0 (fun x y -> x+y)       // 16
printfn $"result1 = {result1}"    // result1 = 16

В данном случае функция action в качестве третьего параметра принимает функцию, которая выполняет некоторые действия над первым и вторым параметром. И данном случае мы явно устанавливаем тип этой функции: float ->float-> float - то есть функция принимает два параметра типа float и возращает значение float.

Определение типа функции выглядит несколько громоздко. Но ситуация усложнится, если мы хотим задейтвовать этот тип многократно. Например, определим еще значение этого типа:

let sum : (float ->float-> float) = fun x y -> x + y

let action x y (func: float ->float-> float) = func x y

let result1 = action 10.0 6.0 sum      // 16
printfn $"result1 = {result1}"    // result1 = 16

Теперь изменим этот код, применим определение псевдонима с помощью оператора type:

type operation = float ->float-> float

let sum: operation = fun x y -> x + y
let action x y (func: operation) = func x y
 
let result1 = action 10.0 6.0 sum      // 16
printfn $"result1 = {result1}"    // result1 = 16

Здесь определяется псевдоним operation, который по факту представляет тип float ->float-> float. То есть фактически мы определяем псевдоним (хотя type также может применяться для определения новых псевдонимов, что будет рассмотрено далее). Далее через идентификатор operation мы можем ссылаться на тип float ->float-> float.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850