let rec nlist n cdr = if n = 0 then cdr else nlist (n-1) (n::cdr) let rec mnlist m n = if m = 0 then [] else (ignore (nlist n []); mnlist (m-1) n) let m = 2000*100 and n = 5000 ;; (* let m = 1 and n = 850*1000*1000 ;; *) print_endline ("m=" ^ (string_of_int m) ^ " n=" ^ (string_of_int n)) ; mnlist m n