2012-09-09 18 views
0

因此我在OCaml中调试时遇到了问题。问题是我正在编写非常简单的代码,但我一直在收到一个似乎很容易解决的问题 - 我只是不知道该怎么做!OCaml中的“Unexpected Tokens”和调试

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行的第一个“如果”出现错误:“意外令牌:如果”

谢谢!

+2

你的麻烦是不是在调试ocaml的,它是了解Ocaml程序编写的概念和句法。干净地编译之前,您没有开始调试您的程序。 –

回答

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给予其结果对整个表达式)

+0

好吧,我修好了。谢谢! 但是现在我在我的下一个函数中出现语法错误和“意外令牌”错误。 – sahibeast

+1

你必须学习Ocaml的语法。您是否重新阅读了http://caml.inria.fr/pub/docs/manual-ocaml-4.00/language.html;您应该多读几遍,并在编码时参考相关部分。 –

+0

好吧,使用'<-'来分配数组元素,字符串元素和记录的可变字段。但是,是的,你不能“分配”一个变量。 – newacct