【发布时间】:2020-08-07 13:51:14
【问题描述】:
在 Ullman 的 SML 书中:
我们可以从旧类型 T1 和 T2 构建新类型,如下所示。
T1 * T2 是“产品”类型,其值为对。该对的第一个组件是 T1 类型,第二个是 T2 类型。
T1 -> T2 是“函数”类型,其值是域类型 T1 和范围类型 T2 的函数。
我们可以创建新类型,方法是使用某些充当类型构造函数的标识符来跟踪诸如 T1 之类的类型。
(a) 列表类型构造函数。也就是说,对于每一种类型 T1,都有 另一种类型的 T1 列表,其值是列表,其所有元素都是 T1 型。
(b) 选项类型构造函数。对于每个类型 T1 都有一个类型 T1 值为 NONE 和 SOME x 的选项,其中 x 是任何类型的值 T1.
(c) 其他类型构造函数 ref、array 和 vector。
我想知道产品类型中的 * 和函数类型中的 -> 是否被视为类型构造函数?
如果不是,为什么?
谢谢。
【问题讨论】:
标签: types functional-programming programming-languages sml ml