module Doukaku179 = begin type PeriodicAutoWriter = class val mutable timer : System.Threading.Timer new() = { timer = null } member t.Start() = t.timer <- new System.Threading.Timer( (fun _ -> printf "%s" "a"), null, 0, 1000) member t.Stop() = if t.timer <> null then (t.timer.Dispose(); t.timer <- null) else () member t.Toggle() = if t.timer = null then t.Start() else t.Stop() end let read_char () = System.Console.ReadKey().KeyChar let keep_read () = seq { while true do yield read_char () done } let run () = let writer = new PeriodicAutoWriter() in writer.Start (); seq { for c in keep_read () do yield (match c with 'q' -> writer.Stop(); false | 'p' -> writer.Toggle(); true | _ -> true) done } |> Seq.find ((=) false) |> (fun _ -> printfn "%s" "");; end;; #if COMPILED let _ = Doukaku179.run ();; #endif