fn inputter () -> { if do input > unbox > empty? then { yield! () inputter () } else receive { (:get, pid) -> send (pid, (:reply, unbox (input))) (:flush, pid) -> { send (pid, (:reply, unbox (input))) store! (input, "") } (:clear) -> store! (input, "") } } fn clear_input () -> store! (input, "") fn read_input () -> { let reader = spawn! (inputter) send (reader, (:get, self ())) receive { (:reply, msg) -> msg } } fn flush_input () -> { let reader = spawn! (inputter) send (reader, (:flush, self ())) receive { (:reply, msg) -> msg } }