函数中的OCaml语法错误

时间:2013-10-27 17:16:55

标签: function syntax syntax-error ocaml

我必须创建一个函数,它将显示一组字符串中的每个元素。我做了以下事情:

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
  );;
  ^

在程序结束时(我放置了那个标志),看起来我有一个错误:语法错误:操作符预期。 请帮我解决这个问题。

2 个答案:

答案 0 :(得分:6)

我相信你的句法问题是let。除顶级代码(模块的最外层)外,let必须后跟in

此代码还有许多其他问题,但也许这会让您找到下一个问题: - )

一些注意事项:

OCaml中的变量是不可变的。因此,名为first的变量将始终为true。你无法改变它。这个(看似很小的)点是函数式编程的关键之一。

您无需按名称引用Pervasives模块。这就是为什么它被称为“无处不在”。你可以单独说print_string

您对print_newline的最后一次通话不是电话。该表达式仅计算函数本身。 (如果你想调用函数,你需要给它一个参数。)

答案 1 :(得分:4)

尝试使用关键字let first = true替换in后面的分号。

相关问题