Неужели в OCaml нет никаких проверок на рекурсию?

Недавно я играл с OCaml и быстро сделал свою любимую вещь, чтобы проверить, насколько хорошо развита VM/компилятор, и написал рекурсивную программу:

let rec f i =
    Printf.eprintf "i = %d\n" i;
    f(i+1);;

let () =
    f 0;;

Программа работает, как и ожидалось, однако, рекурсия НИКОГДА обрывается, более того, у меня эта программа работала некоторое время (примерно 30 минут), перенаправляя stderr в файл, чтобы не засорять терминал. После проверки файла, я был поражен, когда заметил, что файл был около 7*GB* большой!

Как такое может быть? Разве у OCaml нет ограничений на рекурсию?

7
задан Thomas 21 February 2012 в 08:48
поделиться