2017-05-27 5 views
1

donc je le code suivant:OCaml - « module » ou « ouvert » ou [opt_rec] attendu après « nous » erreur

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

Cependant, lorsque je tente d'entrer dans la deuxième fonction, je reçois l'erreur

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

avec le second 'let' dans la dernière ligne soulignée comme source de l'erreur. Je l'ai essayé avec et sans la fonction Random au préalable, mais je reçois toujours cette erreur. Je ne peux pas déterminer quel est le problème, je l'ai utilisé et laissé pratiquement de la même manière dans un autre code sans problème.

Répondre

3

Je crois que le problème ici est que val est un mot-clé. Si vous le remplacez par val_, v, ou toute autre chose qui n'est pas un mot-clé, vous devriez passer cette erreur.

+1

Cela semble être correct - merci beaucoup! – Jayem