oCaml '\n' = '\n' 不会编译

oCaml '\n' = '\n' wont compile

我正在尝试编译代码,它给了我一个无意义的错误,我是 oCaml 的新手,所以我肯定遗漏了一些东西

这是代码

  let foo () =
    if '\n' = '\n' then begin
      print_endline "foo";
    end

这是我运行dune build

时的错误
File "gkoeditor.ml", line 46, characters 7-11:
46 |     if '\n' = '\n' then begin
            ^^^^
Error: This expression has type char but an expression was expected of type
         int

完整的源代码可以在这里找到https://github.com/dhilst/gkoeditor

我正在使用 Curses 和 Core 库,可以肯定我的环境出了问题,

此致

我认为 Core 覆盖了 = 的定义,因此它的类型是 int -> int -> bool。理由是多态比较有时会导致问题。 (如果类型包含函数,它可能会导致异常,并且在循环结构的存在下可能会发散。)

多态 = 从来没有给我带来任何问题,我发现这个重新定义有点麻烦,正是因为它产生了似乎没有意义的错误。但是我可以看到优点。

无论如何,您可以通过在 Poly 模块中专门询问 = 的多态版本来解决此问题。