OCaml中的“意外标记”和调试

时间:2012-09-09 17:26:28

标签: ocaml

所以我在OCaml中调试时遇到问题。问题是我写的代码非常简单,但我一直遇到一个容易修复的问题 - 我只是不知道怎么做!

    let rec multiplier (int1: int) (int2: int) (int3: int) : int =
    let product : int
if int1 >= int2 then(
    if int1 >= int3 then product = int1 * int2
    else product = int1 * int3
)
else if int2 >= int1 then( 
    if int1 >= int3 then product = int2 * int1
    else product = int2 * int3 
)

我不断得到一个红色的' x'并且在第一个"下面有一条squigley线;如果"错误:"意外的令牌:如果"

谢谢!

1 个答案:

答案 0 :(得分:2)

不要认为=是一项任务; Ocaml基本上没有任何作业(除了:=用于参考)。

写点像

 let area : int = 
   if side1 >= side2 then ( 
     if side2 >= side3 then side1 * side3
     else side1 * side3
    )
   else if side2 >= side1 then ( 
     if side1 >= side3 then side2 * side1
     else side2 * side3
   )
   else 0 

请记住,if ... then .... else ....构造是一个表达式;它更像是C的三元?:条件运算符,而不像它的if语句。

请记住,Ocaml没有语句,只有表达式。 (其;运算符(例如a;b)类似于C逗号运算符a,b,意思是计算a,丢弃结果,计算b给出整体结果表达)