Now, let's try a variation; program Echo3 writes Hello!\n to stdout once a second. The user can change this message by typing a line on stdin; after the line is finished with a return, the line typed will be the new message. Here is the program:
module Echo3 where
import POSIX
echo3 env = class
current := "Hello!\n"
save str = action
current := str
tick = action
env.stdout.write current
after (sec 1) tick
result action
env.stdin.installR save
tick
root = newRoot echo3
When running Echo3 one notices a peculiarity of the standard implementation of the POSIX environment: the screen doubles as both the output device stdout and as user feedback part of the input device stdin. Thus, output is intertwined with input characters in a rather unsatisfactory way.