2013-12-14 35 views
0

我一直在試圖運行此函數:基本OCaml的函數返回類型錯誤

let insert_char s c = 
let z = String.create(String.length(s)*2 -1) in 
for i = 0 to String.length(s) - 1 do 
    z.[2*i] <- s.[i]; 
    z.[2*i+1] <- c; 
done; 
z;; 

print_string(insert_char("hello", 'x'));; 

但是解釋在最後一行返回類型錯誤「類型的字符串*炭」,並希望它是串。我認爲我的函數insert_char創建了一個字符串。我真的不明白,謝謝。

回答

2

你定義函數作爲咖喱的功能,但你與調用它值對。你應該這樣稱呼它:

insert_char "hello" 'x' 

OCaml不需要函數調用的圓括號。當兩個值彼此相鄰放置時,兩者之間沒有任何內容,這是一個函數調用。

0

OCaml中函數應用程序的語法是f arg1 arg2而不是f(arg1, arg2)。所以它會是print_string (insert_char "hello" 'x')

(一旦你解決這個問題,你會發現你的代碼有其他問題,但這是無關你的問題。)