open Printf;;
let rec iterate r x_init i =
if i = 1
then x_init
else
let x = iterate r x_init (i-1) in
let y = r * x in y;;
iterate 2 3 4;;
上面的代码不会产生任何警告或错误。刚刚将printf添加到x_init和y。现在它的投掷错误。
我知道它的类型,但不知道如何纠正它。
答案 0 :(得分:1)
在这个问题上没有足够的信息来正确回答它。您应该包含有问题的代码,以便我们可以看到它是什么。与此同时,我有一个猜测。
我怀疑您正在添加如下的printf语句:
let rec iterate r x_init i =
if i = 1 then
printf "x_init: %d\n" x_init;
x_init
else
...
将缩短if
短并打破代码。你需要像begin ... end
这样包装它:
let rec iterate r x_init i =
if i = 1 then begin
printf "x_init: %d\n" x_init;
x_init;
end else
...