我在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与C++完全不同。
非常感谢
发布于 2014-11-12 18:23:49
您已经忘记了第三行的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>范围内工作的绑定,其中绑定是名称和值之间的关联,而作用域是代码的词法部分(即由<expr-2>占用的代码的一部分)。无论如何,很难用两句话来解释OCaml,所以请考虑阅读OCaml的书,这些书是由比我更有经验的老师写的)
https://stackoverflow.com/questions/26893655
复制相似问题