Using Concurrent Haskell to Develop User Interfaces over an Active Repository

Views to the underlying repository of software objects within a Software Development Environment are, by nature, very dynamic. While one user is viewing a version graph, another user may change it by creating or pruning versions. Within the Universal Formal Methods WorkBench (UniForM), which uses Haskell as its central integration language, we have solved the problem by representing all kind of events as first class composable event values in the style of CML. Such events amount to user interactions from the user interaction manager, change notifications from the active repository, individual tool events or internal channel events. Agents, called interactors, can then be set up to maintain consistency between a view and its underlying repository by coordinating database change notifications and user interactions.