OCaml:应用于太多参数

时间:2011-09-27 18:53:07

标签: ocaml

为什么代码

if some_bool_var then
begin
    output_string some_file "some string";   (* <--- error here *)
end

生成“应用于太多参数”错误。但如果我把它改成

if some_bool_var then output_string some_file "some string";

编译得很好。

为什么会这样? 谢谢。

1 个答案:

答案 0 :(得分:2)

我很怀疑你所呈现的内容是不会编译的。我把它复制到顶层,果然我根本没有收到错误。

问题很可能不是你输入的内容,而是你键入的内容。我猜这个特定函数有更多代码行,因此end在表示该命令结束后应该有一个分号。可以将begin ... end视为( ... )的替代方案,将...;视为let () = ... in的替代方案。因此,使用begin ... end不能替代使用分号。

此外,在output_stringbegin之间结束end调用的分号是不必要的,因为该块不会继续使用更多命令。