2013-05-06 65 views
0

爲什麼下面的代碼有語法錯誤?我沒有找到原因。ocaml中的語法錯誤

let rec revStr stringa k e = 
if k = e then "" 
else (string_of_char stringa.[e])^ 
     (revStr stringa (e-1) k);; 

ake是輸入和它應該在輸出sub.string從整數e給到整數k

回答

2

此代碼沒有語法錯誤。當我嘗試它時,我得到「Unbound value:string_of_char」,這是一個類型錯誤。類型錯誤出現在語法錯誤之後,因爲鍵入發生在解析之後。

我的猜測是你在這個函數之前有一個語法錯誤,比如忘記了一個分號或被遺忘的「in」。這些類型的錯誤通常會在稍後檢測到。

+0

謝謝,但現在我有一個嚴重的錯誤:「評估期間堆棧溢出(循環遞歸?)」。 – user2354202 2013-05-06 12:27:46

+0

你確定你的意思是'revStr stringa(e-1)k'而不是'revStr stringa k(e-1)'? – cygin 2013-05-06 14:14:28

2

除了cygin指出的內容(參數看起來相反)之外,revStr自稱爲較小的值爲e。但是您的描述聽起來像e應該小於或等於k。那麼你是不是想通過一個較大的值爲e?否則,我不明白你爲什麼會達到k

作爲一個方面的評論,我想知道爲什麼子字符串函數名爲revStr