函数中的OCaml语法错误

And*_*rew 4 syntax ocaml function syntax-error

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

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
  );;
  ^
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*eld 7

我相信你的句法问题就在于此let.除了顶级代码(模块的最外层)之外,let必须遵循in.

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

几点说明:

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

您无需Pervasives按名称引用模块.这就是为什么它被称为"无处不在".你可以print_string自己说.

你最后一次打电话print_newline不是电话.该表达式仅计算函数本身.(如果要调用该函数,则需要给它一个参数.)