为什么以下代码有语法错误?我没找到原因。
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
答案 0 :(得分:2)
此代码中没有语法错误。当我尝试它时,我得到“Unbound value:string_of_char”这是一个类型错误。语法错误后会出现类型错误,因为在解析后会发生键入。
我的猜测是你在这个函数之前有一个语法错误,比如遗忘的分号或遗忘的“in”。这些错误通常会在以后检测到。
答案 1 :(得分:2)
除了cygin指出的内容(参数似乎相反),revStr
使用e
的较小值调用自身。但是您的描述听起来像e
应该小于或等于k
。那么你不想为e
传递更大的值吗?否则我不明白为什么你会到达k
。
作为旁注,我想知道为什么子串函数被命名为revStr
。