我希望处理整数数轴上的限制。我希望
在
但是
Pervasives.compare
能够处理所有x,使得RightInfinity
> Point
x,并且对于LeftInfinity
反过来。在
ocaml
REPL中:# type open_pt = LeftInfinity | Point of int | RightInfinity
;;
# List.sort Pervasives.compare [LeftInfinity; Point 0; Point 1; RightInfinity]
;;
- : open_pt list = [LeftInfinity; RightInfinity; Point 0; Point 1]
但是
# type open_pt = LeftInfinity | Point of int | RightInfinity of unit
;;
# List.sort Pervasives.compare [LeftInfinity; Point 0; Point 1; RightInfinity ()]
;;
- : open_pt list = [LeftInfinity; Point 0; Point 1; RightInfinity ()]
"多态比较的危险性"指出:
变量首先按照它们的标记进行比较,如果标记相等,则向下递归到内容。
在类型声明中变体出现的顺序与标记顺序之间是否存在任何关系?
Set.t
这样的基于树的数据结构需要急切地进行规范化时,这并不总是可行的,因为代价太高。但是有一些类型是可能的,并且也很有用。 - Mike Samuel