所以我有以下代码:
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函数,但始终会出现此错误。我无法弄清楚问题是什么,我已经习惯了,并且在其他代码中几乎以相同的方式存在而没有问题。
答案 0 :(得分:3)
我认为这里的问题是val
是一个关键字。如果您将其替换为val_
,v
或其他任何不是关键字的内容,则应该通过此错误。