2014-10-18 64 views
-1
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。現在它拋出錯誤。使用printf時ocaml類型錯誤

我知道它的類型,但不知道如何糾正它。

+1

你剛剛添加printf - 它在哪裏?請顯示有問題的代碼。 – 2014-10-18 15:46:53

回答

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 
    ...