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
模块中专门询问 =
的多态版本来解决此问题。
我正在尝试编译代码,它给了我一个无意义的错误,我是 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
模块中专门询问 =
的多态版本来解决此问题。