【发布时间】:2023-03-14 06:52:01
【问题描述】:
为什么微软在创建 Q# 时决定使用关键字 Unit 而不是 void 或 none 来描述没有返回值的方法?这是有原因的,还是微软只是想做一些不同的事情?
【问题讨论】:
标签: q#
为什么微软在创建 Q# 时决定使用关键字 Unit 而不是 void 或 none 来描述没有返回值的方法?这是有原因的,还是微软只是想做一些不同的事情?
【问题讨论】:
标签: q#
Q# 中的函数和操作始终是元组输入元组输出。
再加上单例-元组等价('T 和 ('T) 是完全相同的类型的原理),这让 Q# 可以统一地表示事物,每个函数和操作都只接受一个输入并返回一个输出,其中每个是元组。
这种方法的一个结果是我们可以编写像Composed<'T, 'U, 'V>(inner : ('T -> 'U), outer : ('U -> 'V)) : ('T -> 'V) 这样的函数,确信我们可以将任何 函数作为inner 传递,而无需考虑它需要多少参数。
为了使这种设计保持一致,我们需要一个“不返回任何内容”的函数或操作返回一个空元组,而不是根本没有任何值。在许多函数式语言(包括 F#)中,空元组的类型称为 unit 或 Unit,遵循类型论中的传统表示法。在 Q# 中,我们决定遵循这一传统来阐明值 () 和类型 Unit 之间的区别。
【讨论】: