首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的ocaml代码不起作用

简单的ocaml代码不起作用
EN

Stack Overflow用户
提问于 2014-11-12 18:11:06
回答 1查看 79关注 0票数 0

我在Ocaml中有一个简单的代码,描述如下:

代码语言:javascript
复制
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

但是它会导致语法错误,我不知道为什么:

代码语言:javascript
复制
File "main.ml", line 5, characters 2-6: Error: Syntax error --> Line 5: done;

请帮我修一下,给我推荐一本好书来学习奥卡姆。我是个新手,对里面的一切都很困惑。Ocaml与C++完全不同。

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-12 18:23:49

您已经忘记了第三行的in

你可以找到很多关于OCaml的资料,包括好书here

更新

代码语言:javascript
复制
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绑定:

  1. toplevel绑定,它可以发生在模块定义和toplevel中,它有一种let <name> = <expr>形式。
  2. 表达式绑定可以发生在其他表达式(包括函数)中,它具有let <name> = <expr-1> in <expr-2>的形式,它在<name><expr-1>之间创建一个在<expr-2>范围内工作的绑定,其中绑定是名称和值之间的关联,而作用域是代码的词法部分(即由<expr-2>占用的代码的一部分)。

无论如何,很难用两句话来解释OCaml,所以请考虑阅读OCaml的书,这些书是由比我更有经验的老师写的)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26893655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档