我仍然不明白动机。
为什么他们分别为两个不同的运算符(*
和*.
)进行整数乘法和浮点运算,好像他们害怕重载一样,但同时他们使用*
来表示类型的笛卡尔积?
type a = int * int ;;
为什么他们突然变得如此勇敢?为什么不写
type a = int *.. int ;;
还是什么?
是否存在一些关系,这使得笛卡尔积更接近整数乘积并且远离浮动乘积?
答案 0 :(得分:9)
它没有超载,在type t =
的右侧你定义了另一种概念,你定义的是一种类型,而不是一种价值。
在类似ML的语言中,您可以看到两种不同的语言:
由于这两种语言的领域实际上是分开的,因此在每种语言中重复使用类似的句法结构时没有理论上的问题/模糊性,因此与重载完全无关。
答案 1 :(得分:1)
在数学中,您使用乘法字符注意笛卡尔积。因此,在OCaml中以相同的方式记录它是逻辑...