A cookbook for using the model-view controller user interface paradigm in Smalltalk-80
Journal of Object-Oriented Programming
A multi-threaded higher-order user interface toolkit
User interface software
Tcl and the Tk toolkit
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Concurrent programming in ML
Functional design and implementation of graphical user interfaces for theorem provers
Journal of Functional Programming
The standard ML basis library
ATEC '04 Proceedings of the annual conference on USENIX Annual Technical Conference
Hi-index | 0.00 |
Command-oriented functional programs are currently structured in an ad hoc way that makes the development of multiple user-interfaces difficult and error prone, and makes it difficult to abstractly understand a program's command-oriented behavior. To rectify this, we propose a software architecture for such programs that we call functional model-view-controller (MVC), by a rough analogy with object-oriented MVC. In functional MVC, a program is structured as a model (domain-specific aspects), view (abstract user) and controller (command loops). In contrast to object-oriented MVC, a controller is active, consisting of a number of recursive functions. It calls its view to get user input and to display results to the user; it calls its model to do domain-specific work. To increase adaptability, a controller should be parameterized by its model and view, using a function or an ML-style functor. With this approach, one can write terminal and graphical views; one can also write views that do abstract scripting. One can understand and reason about a program's command-oriented aspects at a high-level of abstraction by focusing on the controller. Of particular note is the way we are able to allow computations of the model to be monitored and aborted by view. We illustrate our approach with a case study of a complete program, written in Standard ML, and using Concurrent ML and the eXene X window system toolkit.