编写OCaml函数时出现“语法错误”?

时间:2019-09-26 01:55:25

标签: functional-programming ocaml

我正在OCaml中编写一个函数以将x提高到y的幂。 我的代码是:

#let rec pow x y =
if y == 0 then 1 else
if (y mod 2 = 0) then pow x y/2 * pow x y/2 else
x * pow x y/2 * pow x y/2;;

当我尝试执行它时,在第一行中出现语法错误,但是并没有告诉我它是什么。

1 个答案:

答案 0 :(得分:1)

编写代码时,您是否键入了##只是OCaml REPL输出以提示输入的字符。它不是代码的一部分。您不应该键入它。

还有一些其他错误应解决:

  • ==是OCaml中的物理相等性。 =是结构平等。尽管两者对于未装箱类型(例如int)的工作方式都是相同的,但最好使用y = 0。请注意,在表达式=中使用建议的相等性y mod 2 = 0
  • 您需要在y/2周围加上括号。 pow x y/2解析为(pow x y) / 2,但您想要pow x (y / 2)