Scott在{#3}中介绍了F#中的域建模,并提供了以下幻灯片:
Deal
是记录类型还是联合类型?
我的问题是关于这一行的:
type Deal = Deck -> (Deck*Card)
我不确定我是否理解这一点。我们如何简单地创建一个函数并将其推入类型?我以为数据和功能应该分开?
答案 0 :(得分:3)
都不是。这是一个函数类型,更确切地说,它是签名Deck -> (Deck * Card)
描述的函数类型的别名。别名的工作方式是,无论您自己声明哪种类型,都可以使用它们使事情变得更清楚,但是如果编译器推断出该类型,则该别名将始终是原始的非别名类型。
因此,在这种情况下,无论给定类型为Deal
,任何接受Deck
并返回元组Deck
和Card
的函数都将被接受。 / p>