为什么代码
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";
编译得很好。
为什么会这样? 谢谢。
答案 0 :(得分:2)
我很怀疑你所呈现的内容是不会编译的。我把它复制到顶层,果然我根本没有收到错误。
问题很可能不是你输入的内容,而是你键入的内容。我猜这个特定函数有更多代码行,因此end
在表示该命令结束后应该有一个分号。可以将begin ... end
视为( ... )
的替代方案,将...;
视为let () = ... in
的替代方案。因此,使用begin ... end
不能替代使用分号。
此外,在output_string
和begin
之间结束end
调用的分号是不必要的,因为该块不会继续使用更多命令。