[英]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
最后一次调用不是电话。 该表达式仅计算函数本身。 (如果要调用该函数,则需要给它一个参数。)
尝试使用关键字in
的let first = true
后替换分号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.