2

这可能是愚蠢的,但我只是没有看到它。这是我的代码

let rec lister old fixed = 
    let paren = Str.regexp "(|)" in 
    match old with
    [] -> []
    | h::t -> if Str.string_match paren h 0 
                 then iter t ((Str.split_delim paren h)@fixed)  
              else  iter t (h::fixed) 
;;

let stl string = 
    let r = Str.regexp " " in 
    let l = lister (Str.split r string) [] 
;;

错误在最后;; 我得到了意想不到的令牌“;;”。我试着修改它有点像

let stl string = 
    let l = lister (Str.split (Str.regexp " ") string) [] 
;;

但仍然没有。我认为 lister 函数不会产生影响,但无论如何我已经包含了它。想法?

4

1 回答 1

7

您有一个不完整的 let-in 表达式:

let stl string = 
    let r = Str.regexp " " in 
    let l = lister (Str.split r s) [] 

试试这个:

let stl string = 
   let r = Str.regexp " " in 
   lister (Str.split r s) [] 

或者你可以做一些等效的事情:

let stl string = 
   let r = Str.regexp " " in 
   let l = lister (Str.split r s) [] in
   l

查看OCaml 文档以获取更多信息。

于 2012-11-23T16:46:48.333 回答