-1

我还是不明白动机。

为什么他们分别为整数和浮点数的乘法创建了两个不同的运算符(**.),好像他们害怕重载一样,但同时它们用来*表示类型的笛卡尔积?

type a = int * int ;;

为什么他们突然变得如此勇敢?为什么不写

type a = int *.. int ;;

或者其他的东西?

是否存在某种关系,使笛卡尔积更接近整数积而更远离浮点积?

4

2 回答 2

9

它没有重载,在您的右侧type t =定义另一种概念,您定义的是类型,而不是值。

在类似 ML 的语言中,您可以看到两种不同的语言:

  1. 允许您定义类型的类型语言(值结构的规范)。
  2. 允许您定义值的值语言(对应于类型的实际值,函数也是值)。这就是被评估的内容。

由于这两种语言的领域是真正分开的,因此在每种语言中重用相似的句法结构没有理论上的问题/歧义,因此与重载绝对无关。

于 2013-01-22T11:37:27.213 回答
1

在数学中,您注意到使用乘法字符的笛卡尔积。因此,在 OCaml 中以相同的方式记录它是合乎逻辑的......

于 2013-01-22T09:56:28.527 回答