在 OCaml 中展开

Explode in OCaml

我想创建一个函数,根据给定的字符将字符串分解为字符串列表,但由于未知原因,OCaml 解释器告诉我第 3 行字符 6-7 存在语法错误实际上是我的过滤器列表。我很困惑。我做错了什么?

let explode s c = 
    let rec explodeIn s c p l = function
        | p + 1 -> (String.sub s 0 p)::l
        | _     -> let idx = String.rindex_from s p c in; explodeIn s c (idx - 1) ((String.sub s (idx + 1) (p - idx))::l) (String.index s c)
    in
    explodeIn s c (String.lentgh - 1) [] (String.index s c)
;;

p + 1 不是有效模式。

也许你的意思是i when i = p + 1

编辑:
还有一些错误:
in 之后无效 ;(第 4 行)
错别字 String.lentgh => String.length s(第 6 行)