我必须创建一个函数,它将显示一组字符串中的每个元素。我做了以下事情:
module S = Set.Make(String);;
module P = Pervasives;;
let write x = (
P.print_string("{"); let first = true;
S.iter (fun str -> (if first then () else P.print_string(","); P.print_string(str))) x;
P.print_string("}");
P.print_newline
);;
^
在程序结束时(我放置了那个标志),看起来我有一个错误:语法错误:操作符预期。 请帮我解决这个问题。
答案 0 :(得分:6)
我相信你的句法问题是let
。除顶级代码(模块的最外层)外,let
必须后跟in
。
此代码还有许多其他问题,但也许这会让您找到下一个问题: - )
一些注意事项:
OCaml中的变量是不可变的。因此,名为first
的变量将始终为true。你无法改变它。这个(看似很小的)点是函数式编程的关键之一。
您无需按名称引用Pervasives
模块。这就是为什么它被称为“无处不在”。你可以单独说print_string
。
您对print_newline
的最后一次通话不是电话。该表达式仅计算函数本身。 (如果你想调用函数,你需要给它一个参数。)
答案 1 :(得分:4)
尝试使用关键字let first = true
替换in
后面的分号。