Dialogues: A basis for constructing programming environments

The components of a programming environment must communicate with the user while maintaining a state that is constantly evolving. We introduce the “dialogue”, an abstraction of such components, and we implement a dialogue function in a purely applicative language. The dialogue function exploits the properties of lasy evaluation and recursion to implement communication and state through recursively defined streams. We show how to define programming environment components using dialogues. The components of the resulting programming environment are consistent in their treatment of communication and state.