0

为什么下面的代码有语法错误?我没有找出原因。

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

string a, k,e是输入,它应该在输出中给出sub.string从 integere到 integer 的值k

4

2 回答 2

2

除了 cygin 指出的(参数似乎颠倒了)之外,还revStr较小的值调用自身e。但是您的描述听起来e应该是小于或等于k。那么你不想为 传递一个更大的e吗?否则我不明白你为什么会到达k

作为旁注,我想知道为什么将子字符串函数命名为revStr.

于 2013-05-06T21:57:02.793 回答
2

此代码中没有语法错误。当我尝试它时,我得到“未绑定值:string_of_char”,这是一个类型错误。类型错误出现在语法错误之后,因为类型是在解析之后发生的。

我的猜测是您在此函数之前有语法错误,例如忘记了分号或忘记了“in”。这些类型的错误通常在很久以后才被发现。

于 2013-05-06T11:55:18.710 回答