我还是不明白动机。
为什么他们分别为整数和浮点数的乘法创建了两个不同的运算符(*
和*.
),好像他们害怕重载一样,但同时它们用来*
表示类型的笛卡尔积?
type a = int * int ;;
为什么他们突然变得如此勇敢?为什么不写
type a = int *.. int ;;
或者其他的东西?
是否存在某种关系,使笛卡尔积更接近整数积而更远离浮点积?
我还是不明白动机。
为什么他们分别为整数和浮点数的乘法创建了两个不同的运算符(*
和*.
),好像他们害怕重载一样,但同时它们用来*
表示类型的笛卡尔积?
type a = int * int ;;
为什么他们突然变得如此勇敢?为什么不写
type a = int *.. int ;;
或者其他的东西?
是否存在某种关系,使笛卡尔积更接近整数积而更远离浮点积?
它没有重载,在您的右侧type t =
定义另一种概念,您定义的是类型,而不是值。
在类似 ML 的语言中,您可以看到两种不同的语言:
由于这两种语言的领域是真正分开的,因此在每种语言中重用相似的句法结构没有理论上的问题/歧义,因此与重载绝对无关。
在数学中,您注意到使用乘法字符的笛卡尔积。因此,在 OCaml 中以相同的方式记录它是合乎逻辑的......