Marcin Kowalczyk (I think) wrote: | I have to think about a good abstraction of terminal actions. I don't | quite like ... because it does not allow integration with arbitrary IO | (or I miss something?) and it heavily depends on the terminal having | particular properties, offered in a context-independent interface of | control sequences. For example it does not fit with an extension of | performing several actions virtually and rendering the screen contents | with all of them applied at once. One of my first Haskell programs was a virtual terminal. It allowed integration with arbitrary I/O, abstracted away from control sequences, and supported the accumulation of virtual actions so that all could applied at once to the real display. See http://www.cs.york.ac.uk/~colin/papers/skye91.ps.gz for a workshop paper about it. A revised version of the paper was included as Chapter 5 in `Applications of Functional Programming', C. Runciman and D. Wakeling (Eds.), UCL Press, 1995. ISBN: 1-85728-377-5. Warning: my program pre-dates monadic I/O, and some language hindrances noted in the paper have now been resolved. However, I think most of what I did and said is still more or less valid. Colin R