OCaml - “let”错误后预期的“模块”或“打开”或[opt_rec]

时间:2017-05-27 13:26:34

标签: ocaml

所以我有以下代码:

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 (acc@[val])

但是当我尝试输入第二个函数时,我收到错误

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

在最后一行中使用第二个'let'作为错误来源加下划线。我事先尝试使用和不使用Random函数,但始终会出现此错误。我无法弄清楚问题是什么,我已经习惯了,并且在其他代码中几乎以相同的方式存在而没有问题。

1 个答案:

答案 0 :(得分:3)

我认为这里的问题是val是一个关键字。如果您将其替换为val_v或其他任何不是关键字的内容,则应该通过此错误。