4

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

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

在程序结束时(我放置该符号的位置)似乎出现错误:语法错误:操作员预期。请帮我解决这个问题。

4

2 回答 2

7

我相信你的语法问题是let. 除了顶层代码(模块的最外层),let后面必须跟in.

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

几点注意事项:

OCaml 中的变量是不可变的。因此,您命名的变量first将始终为真。你不能改变它。这个(看似次要的)点是函数式编程的关键之一。

您不需要Pervasives按名称引用模块。这就是为什么它被称为“无处不在”。你只能print_string自己说。

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

于 2013-10-27T17:27:36.327 回答
4

let first = true尝试用关键字替换分号in

于 2013-10-27T17:25:37.817 回答