alms-0.4.9: examples/futures1.alms
(* 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? "