为什么我的 OCaml "="运算符仅适用于 int?



我使用vscode,并扩展了"OCaml和Reason IDE">

这是我在utop:中的结果

utop # 1. = 1. ;;    
Line 1, characters 0-2:
Error: This expression has type float but an expression was expected of type
int

也适用于字符串:

utop # "Me" = "Me";;
Line 1, characters 0-4:
Error: This expression has type string but an expression was expected of type
int

除了int:之外,其他都一样

utop # 2 = 2 ;;
- : bool = true

">"<"也有同样的症状。我不知道实际发生了什么。有人能帮我吗?非常感谢!

您可能正在使用JaneStreet Base库。也许你是这样进口的:

open Base;;

Base试图将异常限制为具有显式_exn后缀的函数,因此它隐藏了内置的多态等式(=),后者可能会在某些输入上引发异常(例如,如果比较包含函数的结构(。

您可以按如下方式获取多态相等:

let (=) = Poly.(=);;

或者您可以将它与本地导入一起使用:Poly.(x = y)

多态比较有优点也有缺点。人们一致认为,使用单态比较(例如String.equal等(是一个更稳健的选择,尽管它不太方便。

相关内容

  • 没有找到相关文章

最新更新