2017-05-27 56 views
1

所以我有以下代碼:OCaml的 - 預計「模塊」或「打開」或[opt_rec]後,「讓」錯誤

let rec take k list acc = match list with 
| [] -> failwith "empty list" 
| x::xs when k = 0 -> x, acc @ xs 
| x::xs -> take (k - 1) xs (acc @ [x]);; 

let rec random_p l acc = match l with 
| [] -> acc 
| [x] -> acc @ [x] 
| x::xs -> let r = (Random.int (List.length l)) in let val, rest = take r (x::xs) [] in random_p rest ([email protected][val]) 

然而,當我試圖進入第二個功能,我得到的錯誤

Parse error: "module" or "open" or [opt_rec] expected after "let" (in [expr]) 

第二個'let'在最後一行加下劃線作爲錯誤的來源。我之前嘗試過使用和不使用隨機函數,但總是得到這個錯誤。我無法弄清楚問題是什麼,我已經習慣了,並且在其他代碼中以幾乎相同的方式放行。

回答

3

我相信這裏的問題是val是一個關鍵字。如果您將其替換爲val_v或其他任何不是關鍵字的內容,則應該通過此錯誤。

+1

這似乎是正確的 - 非常感謝! – Jayem