如何在OCaml中编写函数'compare:'a->'a->int'?

如何在OCaml中编写函数'compare:'a->'a->int'?,ocaml,Ocaml,好吧,这个问题的标题解释了它自己 在普及语中,比较功能是外部的 如果我被要求在OCaml中实现这样一个函数呢?可能吗 这是不可能的 我们无法在OCaml中实现多态性函数和检查与类型参数对应的数据。Obj模块可以实现这一点,但它不是OCaml语言X.Leroy的一部分 pervisives.compare是用C实现的,可以使用Obj模块类似地实现。它依赖于OCaml值的运行时表示,因此,在没有额外标记的情况下,无法按类型自定义订单。这是不可能的 我们无法在OCaml中实现多态性函数和检查与类型参数

好吧,这个问题的标题解释了它自己

在普及语中,比较功能是外部的

如果我被要求在OCaml中实现这样一个函数呢?可能吗

这是不可能的

我们无法在OCaml中实现多态性函数和检查与类型参数对应的数据。Obj模块可以实现这一点,但它不是OCaml语言X.Leroy的一部分

pervisives.compare是用C实现的,可以使用Obj模块类似地实现。它依赖于OCaml值的运行时表示,因此,在没有额外标记的情况下,无法按类型自定义订单。

这是不可能的

我们无法在OCaml中实现多态性函数和检查与类型参数对应的数据。Obj模块可以实现这一点,但它不是OCaml语言X.Leroy的一部分


pervisives.compare是用C实现的,可以使用Obj模块类似地实现。它依赖于OCaml值的运行时表示形式,因此,在没有额外标记的情况下,无法按类型自定义顺序。

仅使用Obj.magic。@nlucaroni您的意思是什么?魔术也是外在的。在我看来,最好的答案是这是不可能的。注意:Obj.magic不是一个真正的函数;它不生成代码。所以很难说它是外部的。但是Obj.magic不是OCaml的一部分,或者这是我的主张。@JeffreyScofield我想你可以将你的评论转化为答案。我也读了,似乎是外部的,不是吗?虽然我提到了,但我同意杰弗里斯科菲尔德的观点。魔术不是一个合适的解决方案@JacksonTale,Obj模块是stdlib的一部分,但是使用它是不好的做法。只使用Obj.magic。@nlucaroni你什么意思?魔术也是外在的。在我看来,最好的答案是这是不可能的。注意:Obj.magic不是一个真正的函数;它不生成代码。所以很难说它是外部的。但是Obj.magic不是OCaml的一部分,或者这是我的主张。@JeffreyScofield我想你可以将你的评论转化为答案。我也读了,似乎是外部的,不是吗?虽然我提到了,但我同意杰弗里斯科菲尔德的观点。魔术不是一个合适的解决方案@JacksonTale,Obj模块是stdlib的一部分,但是使用它是不好的做法。