F # композиция типов.Как создать экземпляр и использовать. - PullRequest
0 голосов
/ 23 мая 2018

Я могу создавать и создавать простые типы, подобные этому:

type MyStr1 = MyStr1 of string
let myStr1 = MyStr1("aaa")

type MyStr2 = MyStr2 of string
let myStr2 = MyStr2("bbb")

Затем я могу объединить их в третий тип:

type MyStr3 = MyStr1 -> MyStr2

Как создать MyStr3?Что будет представлять этот объект?Для чего это?

1 Ответ

0 голосов
/ 23 мая 2018

Это type alias для типа функции:

type MyStr3 = MyStr1 -> MyStr2

Это не совсем тип, просто псевдоним, который вы знаете:)

Но вы можете использовать его для создания значенияпсевдонима:

let myFun : MyStr3 =
    fun (MyStr1 str) -> MyStr2 str

let result = myFun myStr1
printfn "%A" result //prints `MyStr2 "aaa"`

ДОБАВЛЕНО : в ответ на ваш комментарий:

type MyStr4 = MyStr4 of string

type MyStr3 = MyStr1 -> MyStr2 -> MyStr4

let myFun : MyStr3 = 
    fun (MyStr1 str1) (MyStr2 str2) -> MyStr4 (str1 + str2)
...