(* A bad example with threads. (type error!) *) #load "libthread" let rec printer () = AThread.delay 100000; putStr "x"; flush (); printer () let startStop () = let id = AThread.fork printer in let id = AThread.print id in λ _ → AThread.kill id let after delay stop = AThread.fork (λ _ → AThread.delay delay; stop ()); () let main () = let stop = startStop () in after 2000000 stop; getLine (); stop () (* stop used twice! *) in main ()