函数是联合还是记录类型?

时间:2019-01-16 19:33:11

标签: f#

Scott在{#3}中介绍了F#中的域建模,并提供了以下幻灯片:

nice talk

Deal是记录类型还是联合类型?

我的问题是关于这一行的:

type Deal = Deck -> (Deck*Card)

我不确定我是否理解这一点。我们如何简单地创建一个函数并将其推入类型?我以为数据和功能应该分开?

1 个答案:

答案 0 :(得分:3)

都不是。这是一个函数类型,更确切地说,它是签名Deck -> (Deck * Card)描述的函数类型的别名。别名的工作方式是,无论您自己声明哪种类型,都可以使用它们使事情变得更清楚,但是如果编译器推断出该类型,则该别名将始终是原始的非别名类型。

因此,在这种情况下,无论给定类型为Deal,任何接受Deck并返回元组DeckCard的函数都将被接受。 / p>