72 |
let cut n list = |
let cut n list = |
73 |
if n < 0 then failwith "List2.sub: invalid parameter"; |
if n < 0 then failwith "List2.sub: invalid parameter"; |
74 |
cut_rec n list [] |
cut_rec n list [] |
75 |
|
|
76 |
let tail_map f list = |
let tail_map f list = |
77 |
List.rev (List.rev_map f list) |
List.rev (List.rev_map f list) |
78 |
|
|
79 |
|
|
105 |
match list with |
match list with |
106 |
[] -> raise Not_found |
[] -> raise Not_found |
107 |
| m :: tail -> iter m tail |
| m :: tail -> iter m tail |
108 |
|
|
109 |
|
let shuffle list = |
110 |
|
let a = Array.of_list list in |
111 |
|
let len = Array.length a in |
112 |
|
for i = 0 to len-1 do |
113 |
|
let p = Random.int (len-1) in |
114 |
|
let tmp = a.(i) in |
115 |
|
a.(i) <- a.(p); |
116 |
|
a.(p) <- tmp; |
117 |
|
done; |
118 |
|
Array.to_list a |