OCaml-”一词;模块";或;开放式;或“在”之后预期的[opt_rec];让我们;错误

OCaml-”一词;模块";或;开放式;或“在”之后预期的[opt_rec];让我们;错误,ocaml,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 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”加下划线作为错误源。我事先尝试过使用随机函数和不使用随机函数,但总是得到这个错误。我不知道问题出在哪里,我在其他代码中使用和使用了几乎相同的方法,没有问题。

我相信这里的问题是
val
是一个关键字。如果将其替换为
val
v
,或任何其他非关键字的内容,则应跳过此错误