concrete HelloDemo { @type run () -> () } define HelloDemo { run () { scoped { TextReader reader <- TextReader.fromBlockReader(BasicInput.stdin()) } cleanup { \ BasicOutput.stderr().writeNow("Goodbye.\n") } in while (!reader.pastEnd()) { \ BasicOutput.stderr().writeNow("What is your name? ") String name <- reader.readNextLine() if (name.size() == 0) { break } \ BasicOutput.stderr() .write("Hello \"") .write(name) .write("\", if that's your real name.\n") .flush() } } }