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



Reply via email to