我在Ocaml中有一个简单的代码如下所述:
for i = 1 to 9 do
for j = 1 to 9 do
let k = i*10+j
Format. printf "(define x%d :: int)@." k
done;
print_newline ()
done
但它导致语法错误,我不知道原因:
File "main.ml", line 5, characters 2-6: Error: Syntax error --> Line 5: done;
请帮我解决,并推荐一本好书来学习Ocaml。我是一个新手,对它的一切都很困惑。 Ocaml与C ++完全不同。
非常感谢
答案 0 :(得分:3)
你在第三行忘了in
。
你可以找到很多关于OCaml的资料,包括好书here。
for i = 1 to 9 do
for j = 1 to 9 do
let k = i * 10 + j in (* <- syntax requires you to put `in` here *)
Format.printf "(define x%d :: int)@." k
done;
print_newline ()
done
OCaml中有两种let绑定:
let <name> = <expr>
let <name> = <expr-1> in <expr-2>
的形式,并且它在<name>
和<expr-1>
之间创建一个在<expr-2>
范围内工作的绑定{1}},其中binding是名称和值之间的关联,scope是代码的词法部分(即<expr-2>
占用的代码的一部分)。无论如何,用两句话很难解释OCaml,所以考虑阅读由经验丰富的老师写的OCaml书籍,而不是我))