爲什麼下面的代碼有語法錯誤?我沒有找到原因。ocaml中的語法錯誤
let rec revStr stringa k e =
if k = e then ""
else (string_of_char stringa.[e])^
(revStr stringa (e-1) k);;
串a
,k
,e
是輸入和它應該在輸出sub.string
從整數e
給到整數k
。
爲什麼下面的代碼有語法錯誤?我沒有找到原因。ocaml中的語法錯誤
let rec revStr stringa k e =
if k = e then ""
else (string_of_char stringa.[e])^
(revStr stringa (e-1) k);;
串a
,k
,e
是輸入和它應該在輸出sub.string
從整數e
給到整數k
。
此代碼沒有語法錯誤。當我嘗試它時,我得到「Unbound value:string_of_char」,這是一個類型錯誤。類型錯誤出現在語法錯誤之後,因爲鍵入發生在解析之後。
我的猜測是你在這個函數之前有一個語法錯誤,比如忘記了一個分號或被遺忘的「in」。這些類型的錯誤通常會在稍後檢測到。
除了cygin指出的內容(參數看起來相反)之外,revStr
自稱爲較小的值爲e
。但是您的描述聽起來像e
應該小於或等於k
。那麼你是不是想通過一個較大的值爲e
?否則,我不明白你爲什麼會達到k
。
作爲一個方面的評論,我想知道爲什麼子字符串函數名爲revStr
。
謝謝,但現在我有一個嚴重的錯誤:「評估期間堆棧溢出(循環遞歸?)」。 – user2354202 2013-05-06 12:27:46
你確定你的意思是'revStr stringa(e-1)k'而不是'revStr stringa k(e-1)'? – cygin 2013-05-06 14:14:28