我想将用C编写的一些代码更改为Ocaml
这是一个C代码
int a, b;
if(m > n)
{
a = n;
b = m;
}
else
{
a = m;
b = n;
}
我尝试将其更改为Ocaml,但不知怎的,我在第二行遇到语法错误。
let rec gcd m n =
if m > n then begin let a = n in; let b = m in end
else begin let a = m in; let b = n in end
问题是什么,我该如何解决?
答案 0 :(得分:7)
你必须明白,让声明是本地的。也就是说,当您撰写let variable = assignment in expression
时,variable
仅限于expression
现在当您编写begin let a = n in; let b = m in end
时,不仅您的变量不会被绑定到块之外,而且编译器仍然在两个in
个单词之后等待表达式。你必须记住,除非你使用OCaml的命令功能,否则你应该编写;
来指示后续计算。
另请注意,每个let
声明都会创建一个新变量,因此,如果您在代码的两个不同位置键入let a=
,这与不同。因此,let
必须外部到您的if
声明:
let (a,b) =
if m > n
then (n,m)
else (m,n)
in
the rest of your code
答案 1 :(得分:1)
如果你不想,你可以做同样的事情:
using MinusString