2012-11-23 152 views
2

這可能是愚蠢的,但我只是沒有看到它。這是我的代碼意外令牌「;;」 ocaml

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) [] 
;; 

但仍然沒有。我不認爲李斯特函數會有影響,但我已經包含了它。思考?

回答

7

你有一個讓-表達是不完整的:

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 documentation爲更多信息。