(* An example with futures *) #load "libthread" let prompt : unit -> string Future.future = fun _:unit -> Future.new getLine let printDots : int -> int -> unit = let rec loop (count : int) (delay : int) : unit = if count <= 0 then () else putStr "."; flush (); AThread.delay (1000 * delay); loop (count - 1) delay in loop let main : string -> unit = fun message: string -> putStrLn message; let future = prompt () in printDots 80 20; putStrLn ""; putStrLn (Future.sync future) in main "whadday say? "