LINUX.ORG.RU

OCaml, print_str и side effect


0

0

Почему в данном коде весь вывод появляется на экране после окончания выполнения cicle?

let rec cicle timeout =
if timeout = 0 then 0
else begin
print_string («ok» ^ (string_of_int timeout) ^ «\n»);
Unix.sleep 1;
cicle (timeout - 1)
end
;;

cicle 10 ;;

★★★★★

А как ты определил это?
Может это не баг, а фича? В смысле, особенность REPL OCaml?

anonymous
()

Ну что за люди?!! OCaml то тут причем?

let rec loop timeout =
  if timeout == 0 then 0
  else begin
    print_string ("ok" ^ (string_of_int timeout) ^ "\n") ;
    flush stdout ; (* sic!!! *)
    Unix.sleep 1 ;
    loop (timeout - 1)
  end ;;

P.S. И да, есть Printf.printf.

satanic-mechanic
()
Ответ на: комментарий от satanic-mechanic

Да, с флаш работает :)

seiken ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.