let array_of_list l = match l with | [] -> [||] | x::t -> let a = Array.make (List.length l) x in let rec fill i l = match l with | [] -> a | x::t -> Array.set a i x; fill (i+1) t in fill 1 t let array_of_list l = match l with | [] -> [||] | x::t -> let a = Array.make (List.length l) x in List.iteri (fun i e -> a.(i) <- e) l; a let string_of_array f a = let (pre,sep,post) = ("[|",",","|]") in let s = Array.fold_left (fun s e -> s^(f e)^sep) pre a in let s' = if Array.length a <> 0 then String.sub s 0 (String.length s - 1) else s in s'^post let list_of_array a = Array.fold_left (fun l x -> x::l) [] a let make_matrix n m = Array.make n (Array.make m 0) (* let make_matrix n m = let tmp = Array.make m 0 in Array.make n tmp *) let make_matrix n m = Array.init n (fun _ -> Array.make m 0) let m = make_matrix 4 4 let _ = m.(2).(1) <- 1 let _ = Printf.printf "%s\n" (string_of_array string_of_int (Array.make 0 0)) let _ = Printf.printf "%s\n" (string_of_array (string_of_array string_of_int) m)