繁体   English   中英

函数中的OCaml语法错误

[英]OCaml syntax error in function

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

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

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

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

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

几点说明:

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

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

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

尝试使用关键字inlet first = true后替换分号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM